Flutter DropdownButton选值触发红屏,提示存在重复value问题
问题原因及解决方法
核心原因
这个断言错误的本质是:DropdownButton在选中某个value后,会强制检查所有DropdownMenuItem里有且仅有一个item的value和选中值匹配。结合你有2个选项的场景,大概率是以下两种情况:
- 两个DropdownMenuItem的
value被设置成了同一个值(即CTsaGabEp69DuVLwHsFM) - 动态生成选项时,数据源里出现了重复的标识字段(用来作为
value的字段)
解决步骤
- 手动检查MenuItem的value唯一性
直接查看两个DropdownMenuItem的value属性,确保它们完全不同。示例代码:DropdownMenuItem( value: 'CTsaGabEp69DuVLwHsFM', // 第一个唯一值 child: Text('选项1'), ), DropdownMenuItem( value: '第二个唯一标识', // 必须和第一个不同 child: Text('选项2'), ), - 排查动态数据源的重复项
如果选项是从列表动态生成的,打印每个item的value确认是否重复:
若发现重复,需要先清理数据源,保证每个条目的标识字段唯一。// 假设companies是你的数据源列表 for (var item in companies) { print(item.id); // 检查输出是否有重复的id DropdownMenuItem(value: item.id, child: Text(item.name)); } - 确保状态更新时items列表稳定
在setState更新_selectedCompany时,不要意外修改DropdownButton的items列表,避免原本唯一的value在新列表里消失或重复。
内容的提问来源于stack exchange,提问作者LostTexan
相关产品推荐
相关产品推荐

