在Flutter项目中,我有一个带有日期选择器的输入表单。用户选择日期后,可以通过键入来更改选择的日期。我想验证表单输入,并确保日期输入是正确的日期。
以下是输入表单的屏幕截图:
不幸的是,Dart语言DateTime
对象允许溢出。因此,输入2019-13-1
(DateTime字段的格式类似于yyyy-MM-dd
),然后验证该输入将通过验证,并返回日期2020-1-1
。由于Dart Date溢出行为,第13个月变为明年的第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);
},)
),