【问题标题】:Get data from future func and change the object从未来函数中获取数据并更改对象
【发布时间】: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


【解决方案1】:

我的问题是有状态小部件。我已将其更改为无状态并且有效/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多