首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应为“List<DropdownMenuItem<Color>”类型的值,但获得的类型为“MappedListIterable<Color,DropdownMenuItem<Color>>”

应为“List<DropdownMenuItem<Color>”类型的值,但获得的类型为“MappedListIterable<Color,DropdownMenuItem<Color>>”
EN

Stack Overflow用户
提问于 2020-01-18 01:12:18
回答 1查看 1.1K关注 0票数 1

我正在尝试从下拉菜单中更改列表,但得到此错误:“需要类型为‘themeColor >’的值,但得到类型为'MappedListIterable>‘的值

代码语言:javascript
复制
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()),
              ))
            ),
EN

回答 1

Stack Overflow用户

发布于 2020-01-18 02:30:21

DropdownButton要求显式类型与其项正确匹配。您也没有将map返回的iterable转换回一个列表:

代码语言:javascript
复制
// Before, it's type was List<dynamic>
List<Color> myColor = [ // Add <Color>
  Colors.amber,
  Colors.blue,
  Colors.green,
  Colors.black,
];

代码语言:javascript
复制
items: myColor.map(
  (value) => DropdownMenuItem(
    value: value,
    child: Text(value.toString()),
  ),
).toList(), // Add toList()

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59791964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档