flutter - 预期类型为“列表”的值>',但得到了“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()),
))
),
解决方案
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 文档。
推荐阅读
- installation - InstallScript GetLine() 无法读取包含命令提示符结果的文本文件
- asp.net - 如何清除列表框项目?
- c# - Dapper - 将整个实体作为查询参数或匿名对象传递
- c# - 显示两个最高的 N 数字 c#
- javascript - 如何在javascripts中删除@之后的字符?
- mysql - Delphi - 从注册表检查 MySQL 服务器状态
- html - 如何使用 jdbc、servlet 和 html 将文件远程上传到 MySQL 数据库
- mysql - 复制并插入到同一个表中,没有重复,并且对值进行了微小的更改
- javascript - 返回的反应路由器
在开关中不起作用 - spring - 使用 JMS 模板和 Spring Boot 发送和接收同步消息