В проекте Flutter у меня есть форма ввода с указателем даты. Когда пользователь выбрал дату, можно изменить выбранную дату, набрав. Я хочу проверить правильность ввода формы и убедиться в правильности ввода даты.
Вот снимок экрана формы ввода:
К сожалению, объект языка Dart DateTime
допускает переполнение. Таким образом, если задано значение 2019-13-1
(поле DateTime отформатировано как yyyy-MM-dd
), а затем проверка этого ввода пройдет проверку, возвращая дату 2020-1-1
. 13-й месяц из-за поведения переполнения Dart Date превращается в 1-й месяц следующего года.
Я знаю, что проблема Github уже есть: https://github.com/dart-lang/sdk/issues/11189
Есть лиКто-нибудь, у кого есть рабочее решение, чтобы обойти эту проблему? Спасибо за помощь заранее!
Код для DateTimeField показан ниже:
ListTile(
leading: Icon(Icons.calendar_today, size: 21),
title: DateTimeField(
decoration: InputDecoration(
hintText: 'Date'
),
autovalidate: false,
format: DateFormat('yyyy-MM-dd'),
onShowPicker: (context, currentValue) {
return showDatePicker(
firstDate: DateTime(2019),
initialDate: DateTime.now(),
lastDate: DateTime(DateTime.now().year + 1),
context: context
);
},
validator: (value) {
if ((value.toString().isEmpty) || (DateTime.tryParse(value.toString()) == null)) {
return 'Please enter a valid date';
}
return null;
},
onChanged: (value) {
setState(() => expense.date = value);
},
)
),