【发布时间】:2020-10-23 04:42:22
【问题描述】:
美好的一天! 我有一个类 ToDoItem
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});
}
然后我有一个 DatePicker
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,
);
},
);
}
最后我通过 Provider 获得 ToDoItem 类的对象。
@override
Widget build(BuildContext context) {
final todoItem = Provider.of<ToDoItem>(context);
所以问题是如何将对象 ToDoItem 中的 doingDate 更改为 finaldate 的新值? 如何检查此变量是否已被 DataPicker 中的新数据更改?我应该使用任何侦听器还是更简单的东西?
【问题讨论】:
-
嗨弗拉基米尔,我想你可以使用 map 方法来更改doingDate api.flutter.dev/flutter/dart-core/Iterable/map.html
-
谢谢!我将编写一个代码来更改doingDate。问题是如何让这个改变函数知道 finalDate 被 Datepicker 改变了?例如,我在 DatePicker 中单击选择一个新日期,确认它,然后我的更改函数必须知道是时候更改doingDate了。
标签: flutter dart datepicker widget