Flutter中DropdownButton赋值出现类型不匹配错误的解决求助
报错原因
这个问题是Flutter空安全机制下类型不匹配导致的,具体有两个核心问题:
- 你声明的
listItem没有指定泛型,默认是List<dynamic>类型,就算你给DropdownButton加了<String>泛型,动态类型也会导致类型推断出错 onChanged回调的参数newValue没有明确指定类型,默认被推断为Object?,自然无法直接赋值给String?类型的valueChoose变量
修复方案
只需要修改两处代码即可解决:
- 给
listItem指定明确的泛型类型:
// 原来的写法 List listItem = ["A", "B", "C", "D", "E"]; // 修改后 List<String> listItem = ["A", "B", "C", "D", "E"];
- 给
onChanged回调的参数明确指定为String?类型:
// 原来的写法 onChanged: (newValue) { setState(() { valueChoose = newValue; }); }, // 修改后 onChanged: (String? newValue) { setState(() { valueChoose = newValue; }); },
修改完成后重新运行项目,类型不匹配的报错就会消失,下拉选择功能可以正常运行。
内容的提问来源于stack exchange,提问作者yamini r
相关产品推荐
相关产品推荐

