отображать выбранную дату в поле формы для флаттера
Я пытаюсь понять, как я могу отобразить выбранную дату обратно в поле формы для Flutter. Если я просто использую текстовый элемент, он отлично работает
TextFormField(
onTap: _selectDate,
enabled: true,
initialValue: DateFormat("E, d MMM yyyy")
.format(_date)
.toString(),
readOnly: true,
decoration: InputDecoration(labelText: 'Date'),
),
SizedBox(height: 8),
Text(DateFormat("E, d MMM yyyy")
.format(_date)
.toString()),
void _selectDate() async {
final DateTime newDate = await showDatePicker(
context: context,
initialDate: _date,
firstDate: DateTime.now(),
lastDate: DateTime.now().add(Duration(days: 90)),
helpText: 'Select date for task',
);
if (newDate != null) {
setState(() {
_date = newDate;
});
}
}
1 ответ
Решение
Попробуйте создать TextEditingController и назначить контроллер для TextFormField, а затем установите для controller.text значение, которое вы хотите присвоить в setState. См. Пример кода ниже для справки.
TextEditingController _dateController = TextEditingController();
TextFormField(
controller: _dateController,
onTap: _selectDate,
enabled: true,
initialValue: DateFormat("E, d MMM yyyy")
.format(_date)
.toString(),
readOnly: true,
decoration: InputDecoration(labelText: 'Date'),
),
SizedBox(height: 8),
Text(DateFormat("E, d MMM yyyy")
.format(_date)
.toString()),
void _selectDate() async {
final DateTime newDate = await showDatePicker(
context: context,
initialDate: _date,
firstDate: DateTime.now(),
lastDate: DateTime.now().add(Duration(days: 90)),
helpText: 'Select date for task',
);
if (newDate != null) {
setState(() {
_date = newDate;
_dateController.text = _date.toString();
});
}
}