Flutter DropdownButton报错:'Object?'类型值无法赋值给'String'类型变量
报错原因
你遇到的类型不匹配报错来自两个问题:
- 没有给
DropdownButton组件指定泛型,组件默认识别选项值类型为Object? onChanged回调参数默认声明为Object?类型,无法直接赋值给String类型的dropdownvalue变量
修复方案
修改两处代码即可:
- 给
DropdownButton和DropdownMenuItem加上<String>泛型,明确所有选项值都是String类型 - 将
onChanged回调的参数类型调整为String?,赋值前可增加非空判断避免空安全报错
修改后的完整代码如下:
DropdownButton<String>( value: dropdownvalue, icon: Icon(Icons.keyboard_arrow_down), items: items.map((String item) { return DropdownMenuItem<String>( value: item, child: Text(item) ); }).toList(), onChanged: (String? newValue) { setState(() { // 若你的dropdownvalue为非空String类型,需添加判空逻辑 if (newValue != null) { dropdownvalue = newValue; } }); }, ),
额外注意
原代码中items.map的回调参数名和外层列表变量名重名,已调整为item,避免后续逻辑混淆。
内容的提问来源于stack exchange,提问作者suzan emad
相关产品推荐
相关产品推荐

