Dart (Flutter) map<String, String>.map 没有 toList()

Wou*_*tte 2 dart

我有一个地图结构,我想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();
Run Code Online (Sandbox Code Playgroud)

(如果您使用的是 Windows,则 US/GB 将打印为文本,如果您使用的是任何其他平台,则它将是标志)。现在的问题有两个:

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

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

jam*_*lin 5

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();
Run Code Online (Sandbox Code Playgroud)

或者:

  var menuItems = [
    for (var mapEntry in languages.entries)
      DropdownMenuItem(value: mapEntry.key, child: Text(mapEntry.value)),
  ];
Run Code Online (Sandbox Code Playgroud)