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

Flutter中ListView Builder动态实现单选RadioButton问题修正

修正Flutter动态RadioButton单选失效问题

问题根源在于你给每个Radio分配了独立的groupValue[index],这会让每个Radio属于不同的分组,自然就和Checkbox一样可以多选。要实现全局单选,所有Radio必须共享同一个分组值。

修正步骤:

  • 把原有的数组类型groupValue改成单个变量,用于存储当前选中的值
  • 所有Radio的groupValue统一绑定这个变量
  • onChanged回调中更新这个变量为当前选中的Radio值

修正后的代码示例:

// 先在State类中定义单个选中值变量
int? selectedValue;

// ListView.builder实现部分
ListView.builder(
  shrinkWrap: true,
  physics: const ClampingScrollPhysics(),
  itemCount: sampleData.length,
  itemBuilder: (context, index) {
    // 取出当前选项对应的Radio值
    final radioValue = value[index][0];
    return ButtonBar(
      alignment: MainAxisAlignment.center,
      children: <Widget>[
        Radio(
          groupValue: selectedValue,
          value: radioValue,
          onChanged: (newValue) {
            setState(() {
              selectedValue = newValue as int;
            });
          },
        ),
        // 可添加对应文本,方便用户识别选项
        Text(sampleData[index].toString()),
      ],
    );
  },
),

关键改动说明:

  • 用单个变量selectedValue替代原数组groupValue,确保所有Radio属于同一分组
  • 每个Radio的value仍对应各自的选项值radioValue,保证选项唯一性
  • 更新状态时仅修改selectedValue,Flutter会自动重新渲染所有Radio,切换选中状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 04:20:30