Flutter TextFormField集成日期选择器出现String转DateTime类型转换错误
问题解决方法
报错根因
- 初始化
currentdate时,DateFormat.format()方法返回值为String类型,强制使用as DateTime转型触发了类型不匹配错误,currentdate本身为DateTime类型,直接赋值DateTime.now()即可。 - 直接调用
pickedDate.toString()会返回带时间的完整日期字符串,无法得到你需要的dd-MM-yyyy格式,需要指定格式转换。
前置依赖
首先确认pubspec.yaml中已引入intl日期处理包:
dependencies: flutter: sdk: flutter intl: ^0.18.1 # 可替换为当前最新稳定版本
修正后完整代码
// 顶部导入intl包 import 'package:intl/intl.dart'; // 修正currentdate初始化逻辑 DateTime currentdate = DateTime.now(); TextEditingController _date = TextEditingController(); // 页面初始化时给输入框赋默认日期值(可选) @override void initState() { super.initState(); _date.text = DateFormat('dd-MM-yyyy').format(currentdate); } Future<void> _selectDate(BuildContext context) async { final DateTime? pickedDate = await showDatePicker( context: context, initialDate: currentdate, firstDate: DateTime(2015), lastDate: DateTime(2050), ); if(pickedDate != null && pickedDate != currentdate) { setState(() { currentdate = pickedDate; // 按dd-MM-yyyy格式转换日期为字符串赋值给输入框 _date.text = DateFormat('dd-MM-yyyy').format(pickedDate); }); } }
内容的提问来源于stack exchange,提问作者Binu Das
相关产品推荐
相关产品推荐

