我有一个出生日期格式的字段。
我尝试了一些代码,但是它同时显示日期和时间,但是我只想要日期。
有什么完美的方法吗?
变量
String initValue="Select your Birth Date";
bool isDateSelected= false;
DateTime birthDate; // instance of DateTime
String birthDateInString;
这里是dateTime选择器的代码。
GestureDetector(
child: new Icon(Icons.calendar_today),
onTap: ()async{
final datePick= await showDatePicker(
context: context,
initialDate: new DateTime.now(),
firstDate: new DateTime(1900),
lastDate: new DateTime(2100)
);
if(datePick!=null && datePick!=birthDate){
setState(() {
birthDate=datePick;
isDateSelected=true;
birthDateInString = "${birthDate.month}/${birthDate.day}/${birthDate.year}";
});
}
}
)
此小部件用于显示日期
new Text(isDateSelected ? "$birthDate":initValue),
答案 0 :(得分:2)
定义一个变量。
String birthDateInString;
然后在您的onTap
birthDateInString = "${birthDate.month}/${birthDate.day}/${birthDate.year}"; // 08/14/2019
更新:
GestureDetector(
child: new Icon(Icons.calendar_today),
onTap: ()async{
final datePick= await showDatePicker(
context: context,
initialDate: new DateTime.now(),
firstDate: new DateTime(1900),
lastDate: new DateTime(2100)
);
if(datePick!=null && datePick!=birthDate){
setState(() {
birthDate=datePick;
isDateSelected=true;
// put it here
birthDateInString = "${birthDate.month}/${birthDate.day}/${birthDate.year}"; // 08/14/2019
});
}
}
)
答案 1 :(得分:0)
最好使用DateFormat
(来自intl包)而不是手动形成显示字符串。这样,您可以本地化日期。例如
import 'package:intl/intl.dart';
....
new Text(isDateSelected ? DateFormat.yMMMd().format(birthDate) : initValue)
飞镖参考:https://pub.dev/documentation/intl/latest/intl/DateFormat-class.html
您需要为用例使用正确的格式化程序。