>',flutter,dart"/>

首页 > 解决方案 > 预期类型为“列表”的值>',但得到了“MappedListIterable”类型之一>'

问题描述

我正在尝试从下拉菜单中更改 themeColor 但收到此错误:“预期类型为 'List>',但得到类型为 'MappedListIterable>' 的值之一

Color  selected ;

MaterialApp(
      theme: ThemeData(primarySwatch: selected),
      home: Scaffold();

 List myColor = [
    Colors.amber,
    Colors.blue,
    Colors.green,
    Colors.black,
  ];

 DropdownButton(
              icon: Icon(Icons.arrow_downward),
              value: selected,
              onChanged: (value){
                setState(() {
                  selected = value;
                });
              },
              items: myColor.map((value)=>DropdownMenuItem(
                value: value,
                child: Text(value.toString()),
              ))
            ),

标签: flutterdart

解决方案


DropdownButton 需要显式类型才能正确匹配其项目。您也没有将返回的可迭代对象map转换为列表:

// Before, it's type was List<dynamic>
List<Color> myColor = [ // Add <Color>
  Colors.amber,
  Colors.blue,
  Colors.green,
  Colors.black,
];

items: myColor.map(
  (value) => DropdownMenuItem(
    value: value,
    child: Text(value.toString()),
  ),
).toList(), // Add toList()

有关更多详细信息,请参阅DropdownButton 文档


推荐阅读