.map 没有 toList(),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 将打印为文本,如果您在任何其他平台上,它将是标志)。现在的问题是双重的:

  1. 根据闭包上下文的要求,返回类型“DropdownMenuItem”不是“MapEntry”。
  2. 没有为“Map”类型定义“toList”方法。

如何从地图中正确创建列表?这是不可能的,因为地图不是有序集合吗?

标签: dart

解决方案


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)),
  ];

推荐阅读