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

Dialog中使用CheckBoxModal实现复选框列表点击后状态无实时更新问题咨询

问题根因
  • 代码中已经引入了StatefulBuilder获取Dialog内的局部刷新能力,但点击事件触发后没有调用StatefulBuilder提供的setState方法,导致UI无法感知数据变更及时刷新
  • 若onItemClicked方法内修改的不是getinstruction列表中原有对象的属性,也会出现数据变更无法映射到UI的问题
修复代码
Container(
      height: 180,
      child: ListView(
          shrinkWrap: false,
          physics: NeverScrollableScrollPhysics(),
          children: [
            Wrap(
              crossAxisAlignment: WrapCrossAlignment.center,
              alignment: WrapAlignment.center,
              children: [
                ...getinstruction
                    .map(
                      (item) => Container(
                        width: 150,
                        child: StatefulBuilder(builder: (context, setState) {
                          return ListTile(
                            onTap: () {
                              onItemClicked(item);
                              // 调用StatefulBuilder的setState触发Dialog内局部刷新
                              setState(() {});
                            },
                            leading: Checkbox(
                              value: item.value,
                              onChanged: (bool? value) {
                                onItemClicked(item);
                                // 调用StatefulBuilder的setState触发Dialog内局部刷新
                                setState(() {});
                              },
                            ),
                            title: Text(item.title),
                          );
                        }),
                      ),
                    )
                    .toList(),
              ],
            ),
          ]),
    );
额外注意事项
  • 确保onItemClicked方法内直接修改传入item对象的value属性,不要创建新的item对象替换列表中原有元素
  • 若需要在Dialog关闭后依然保留复选框选择状态,修改item.value后同步调用外层Widget的setState更新全局状态即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:54:03