Flutter-调用addAll函数时,地图无法正常工作

时间:2019-09-04 10:21:20

标签: flutter dart mobx

这是我现在拥有的代码(我正在使用Mobx):

@observable
ObservableMap dates = ObservableMap();

@action
void getDate() {
  final Map obj = {};
  final map = item['dates'].map((date) {
    DateTime key = DateTime.parse(date['date']);

    obj.addAll({
      key: ['list']
    });
  });

//    print(map);
  dates.addAll(obj);
}

我具有调用查询和调用getDate函数的功能。

在我的UI上,我仅调用dates,但不会返回任何值。仅当print语法未注释时,该值才返回。

有解决办法吗?

1 个答案:

答案 0 :(得分:1)

您正在使用map方法对item['dates']的每个元素进行操作。这是行不通的,因为map操作是 lazy ,并且在您开始使用结果 之前不会做任何事情。您可以对结果调用.toList()使其进行所有计算,但这是一种回旋方式。

使用forEach来为每个元素热切地做一些事情,或者甚至更好的是,使用for-in循环:

item['dates'].forEach((date) { ... });

for (var date in item['dates']) {
  var key = DateTime.parse(date['date']);
  obj.addAll({key: ['list']});
  // or just:
  // obj[key] = ['list'];
}