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

Flutter中如何实现同一时间仅勾选一个Checkbox?

实现同一时间仅勾选一个复选框的方案

核心思路

不用单个布尔值控制选中状态,而是用一个变量记录当前选中项的唯一标识(比如你的certId),通过对比标识来控制每个复选框的选中状态,从而实现单选效果。

具体实现步骤

  1. 在你的State类中定义变量,用来存储当前选中项的ID:

    String? selectedCertId; // 根据你的certId类型调整,比如int?
    
  2. 修改Checkbox的value和onChanged逻辑:

    Container(
        child: Row(
            mainAxisAlignment: MainAxisAlignment.end,
            children: [
                Checkbox(
                    checkColor: Colors.white,
                    // 通过对比当前certId和选中ID来确定是否勾选
                    value: selectedCertId == certId,
                    onChanged: (bool? value) {
                        setState(() {
                            if (value == true) {
                                // 勾选时,将当前certId设为选中ID
                                selectedCertId = certId;
                            } else {
                                // 取消勾选时清空选中状态(可选,若需强制保留一个选中项可删除此分支)
                                selectedCertId = null;
                            }
                            // 传递当前选中的ID(替代原来的certId)
                            passData(selectedCertId);
                        });
                    },
                ),
            ],
        )),
    

批量生成复选框的场景

如果是通过列表(比如ListView.builder)生成多个复选框,只需在每个子项中复用上述逻辑,传入对应项的certId即可。点击任意复选框时,selectedCertId会更新为当前项的ID,其他复选框会自动取消选中状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:05:37