Flutter使用Map配置DropdownButton时出现值匹配报错如何解决
报错原因
DropdownButton的value属性要求必须和所有DropdownMenuItem提供的value值中的某一个完全相等,你这里出现了取值不匹配的问题:
- 你给
DropdownButton的value传的是_options[dropDownValue],也就是Map的展示值,默认状态下对应内容为Все подряд - 但你定义
DropdownMenuItem时,给每个选项配置的value是Map的键,比如created、rating这类取值
两边取值来源不一致,找不到匹配项,所以触发了对应的报错。
解决方案
直接修改DropdownButton的value属性取值即可,将:
value: _options[dropDownValue],
修改为:
value: dropDownValue,
dropDownValue存储的是当前选中项的键,和所有DropdownMenuItem的value取值完全对应,既可以正常匹配默认选中项,也不会影响你后续把选中的键回传给父组件的逻辑,selectedItemBuilder内的展示逻辑不需要调整。
内容的提问来源于stack exchange,提问作者Otabek Ochilov
相关产品推荐
相关产品推荐

