Как динамически изменить начальное значение в Flutter - PullRequest
0 голосов
/ 12 мая 2019

У меня есть форма, которая содержит несколько полей, одно из которых является полем даты:

GestureDetector(
  onTap: ()  {
    selectDate(context);
  },
  child: AbsorbPointer(
    child: TextFormField(
      initialValue: dataEvento,
      decoration: InputDecoration(
          labelText: 'Date ${dataEvento}',
          labelStyle: TextStyle(
              fontFamily: 'acumin-pro',
              fontSize:
              MediaQuery.of(context).size.height * 0.022,
              fontWeight: FontWeight.bold,
              color: Colors.grey),
          focusedBorder: UnderlineInputBorder(
              borderSide: BorderSide(color: dataUserGlobal.yellow))),
      style: TextStyle(color: dataUserGlobal.lightBlue),
      validator: (value) =>
      value.isEmpty ? 'Campo obbligatorio' : null,
      onSaved: (value) => dataEvento = value,
    ),
  ),
),

Когда я нажимаю на это поле, я вызываю эту функцию

DateTime selectedDate = DateTime.now();
Future selectDate(BuildContext context) async {
  DateTime picked = await showDatePicker(
      context: context,
      initialDate: selectedDate,
      firstDate: DateTime(2015, 8),
      lastDate: DateTime(2101));
  if (picked != null && picked != selectedDate)
    setState(() {
      dataEvento = DateFormat('yyyy-MM-dd').format(picked);
    });
}

но я не могу изменить значение внутри поля.

Для отладки я пытаюсь вставить имя переменной в текст метки labelText: 'Date ${dataEvento}', и это показывает мне дату, когда я нажимаю на поле и выбираю дату. Но поле initialValue остается пустым.

Что я делаю не так?

1 Ответ

2 голосов
/ 12 мая 2019

А как насчет добавления контроллера в ваш textFormField следующим образом:

TextEditingController _txtFormCtrl = TextEditingController();

, и эта функция может вам помочь:

 void _changeDatetime(int year, int month, int date) {
    setState(() {
      _year = year;
      _month = month;
      _date = date;
      _datetime = '$year-$month-$date';
      _txtFormCtrl.text = _datetime;
    });
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...