Flutter - 调用 addAll 函数时地图不起作用
Flutter - Map not working when addAll function call
这是我现在拥有的代码(我正在使用 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
但它不会 return 任何值。如果 print
语法未注释,则该值仅 return。
有解决办法吗?
您正在使用 map
方法为 item['dates']
的每个元素做一些事情。这不起作用,因为 map
操作是 惰性 并且在您开始 使用 结果之前不会执行任何操作。您可以对结果调用 .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'];
}
这是我现在拥有的代码(我正在使用 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
但它不会 return 任何值。如果 print
语法未注释,则该值仅 return。
有解决办法吗?
您正在使用 map
方法为 item['dates']
的每个元素做一些事情。这不起作用,因为 map
操作是 惰性 并且在您开始 使用 结果之前不会执行任何操作。您可以对结果调用 .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'];
}