将列表<MapEntry<int,bool>>转换为Map<int,bool>在dart中



我想创建一个映射,映射数字从1到10到计数值。目前,我做:

Iterable<int> spread = Iterable<int>.generate(10);
Iterable<Future<MapEntry<int, bool>>> futureEntries= spread.map((i) async {
int level = i + 1;
bool levelRight = await checkCountForLevel(level);
return MapEntry(level, levelRight);
});
List<MapEntry<int, bool>> listOfEntries = await Future.wait(futureEntries);
Map<int, bool> levelCorrect = Map.fromIterable(listOfEntries);

然而,我得到了错误:

E/flutter(29690(:[错误:flutter/lib/ui/ui_start_state.cc(199(]未处理的异常:类型'MapEntry<int,布尔>'不是"key"的"int"类型的子类型

我必须使用与Map.fromIterable不同的方法吗?

在我尝试修复您的解决方案之前,我只想知道您是否知道可以这样做?

Future<void> main() async {
final levelCorrect = {
for (var level = 1; level <= 10; level++)
level : await checkCountForLevel(level)
};
}

如果要使用自己的解决方案,则应使用Map.fromEntries而不是Map.fromIterable

最新更新