问题描述
class TodoItem with ChangeNotifier {
final String id;
final DateTime creationDate;
final DateTime doingDate;
final String text;
final Color color;
TodoItem({this.id,this.creationDate,this.doingDate,this.text,this.color});
}
class _TopWithDateAndOptionState extends State<TopWithDateAndOption> {
var finaldate;
void callDatePicker() async {
var order = await getDate().then(
(value) => print("VAL = ${value}"),);
// setState(() {
// finaldate = order;
// print("pickeddate = ${finaldate}");
// });
}
Future<DateTime> getDate() {
// Imagine that this function is
// more complex and slow.
return showDatePicker(
context: context,initialDate: DateTime.Now(),firstDate: DateTime(2018),lastDate: DateTime(2030),builder: (BuildContext context,Widget child) {
return Theme(
data: ThemeData.light(),child: child,);
},);
}
最后,我通过提供程序获得了TodoItem类的对象。
@override
Widget build(BuildContext context) {
final todoItem = Provider.of<TodoItem>(context);
所以问题是如何用新值 finaldate 更改对象 TodoItem 中的 doingDate ? 如何检查此变量是否已被DataPicker的新数据更改?我应该使用任何侦听器还是更简单的方法?
解决方法
我的问题是有状态的小部件。我已将其更改为无状态,并且可以正常工作/