IconButton(
onPressed: () async {
DateTime? x = await showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime.now(),
lastDate: DateTime(2040));
if (x == null) return;
setState(() {
final DateFormat formatter = DateFormat('yyyy-MM-dd');
String formattedDate = formatter.format(x);
print(formattedDate);
print(formattedDate.runtimeType);
});
},
icon: const Icon(UniconsLine.clock)),
Text(formattedDate ?? "EMPTY"),
我看到下面构建方法中的formattedDate变量总是为空,为什么此代码不工作
3条答案
按热度按时间vc9ivgsu1#
你能试着提升formatedDate吗?我想问题是你的变量超出了作用域。
gev0vcfq2#
问题出在变量formattedDate的作用域中。它只存在于setState中,因为它是在那里声明的。
在类的开头声明它。
qco9c6ql3#
您已经在
setState()
中将formattedDate
重新定义为局部变量。您在Text(formattedDate ?? "EMPTY")
中使用的字段formattedDate
是一个完全不同的变量。它仍然为空,因为您根本没有更改它。只需删除formattedDate
之前的String
,它应该没有问题。