You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter DropdownButton选值触发红屏,提示存在重复value问题

问题原因及解决方法

核心原因

这个断言错误的本质是:DropdownButton在选中某个value后,会强制检查所有DropdownMenuItem里有且仅有一个item的value和选中值匹配。结合你有2个选项的场景,大概率是以下两种情况:

  • 两个DropdownMenuItem的value被设置成了同一个值(即CTsaGabEp69DuVLwHsFM)
  • 动态生成选项时,数据源里出现了重复的标识字段(用来作为value的字段)

解决步骤

  1. 手动检查MenuItem的value唯一性
    直接查看两个DropdownMenuItem的value属性,确保它们完全不同。示例代码:
    DropdownMenuItem(
      value: 'CTsaGabEp69DuVLwHsFM', // 第一个唯一值
      child: Text('选项1'),
    ),
    DropdownMenuItem(
      value: '第二个唯一标识', // 必须和第一个不同
      child: Text('选项2'),
    ),
    
  2. 排查动态数据源的重复项
    如果选项是从列表动态生成的,打印每个item的value确认是否重复:
    // 假设companies是你的数据源列表
    for (var item in companies) {
      print(item.id); // 检查输出是否有重复的id
      DropdownMenuItem(value: item.id, child: Text(item.name));
    }
    
    若发现重复,需要先清理数据源,保证每个条目的标识字段唯一。
  3. 确保状态更新时items列表稳定
    在setState更新_selectedCompany时,不要意外修改DropdownButton的items列表,避免原本唯一的value在新列表里消失或重复。

内容的提问来源于stack exchange,提问作者LostTexan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 17:02:39