这是我现在拥有的代码(我正在使用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
语法未注释时,该值才返回。
有解决办法吗?
答案 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'];
}