dart - Dart (Flutter) 地图.map 没有 toList()
问题描述
我有一个地图结构,我想DropdownMenuItem<String>
为每个条目制作一个。我试图做的是这样.map().toList()
打电话
var _languages = {
'en': 'English /',
'fr': 'French ',
'nl': 'Dutch',
'es': 'Spanish'
};
languages.map((key, value) => DropdownMenuItem(
value: key,
child: Text(v)
)).toList();
(如果您在 Windows 上,US/GB 将打印为文本,如果您在任何其他平台上,它将是标志)。现在的问题是双重的:
- 根据闭包上下文的要求,返回类型“DropdownMenuItem”不是“MapEntry”。
- 没有为“Map”类型定义“toList”方法。
如何从地图中正确创建列表?这是不可能的,因为地图不是有序集合吗?
解决方案
Map<K, V>.map
返回另一个 Map
,这不是你想要的。
相反,您可以Iterable
从第Map
一个创建一个,然后使用Iterable.map
返回另一个Iterable
:
var menuItems = languages.entries
.map((mapEntry) =>
DropdownMenuItem(value: mapEntry.key, child: Text(mapEntry.value)))
.toList();
或者:
var menuItems = [
for (var mapEntry in languages.entries)
DropdownMenuItem(value: mapEntry.key, child: Text(mapEntry.value)),
];
推荐阅读
- angularjs - AngularJS 组件不会实例化,“‘模块’不是函数”
- mongodb - 将 ObjectId 与 $graphLookup 的字符串匹配
- html - 边框弯曲的css - 带有弯曲端的圆
- python - 如何用python和thrift处理Broken pipe
- c++ - 为什么第 32769 次插入在 std::unordered_set 中失败?
- excel - 需要 VBA 代码效率建议
- jquery - 在 Bxslider 上设置 moveSlides 2
- c# - 如何在 ubuntu 18.04 上配置 vim/nvim 以使用自动完成功能进行 c# .net-core 开发
- java - 如何完成不是字节数组输入流的异步 HTTP 客户端输入流?
- c - While-Loop 中的错误不断计数超出条件