You need to enable JavaScript to run this app. Flutter如何单独选中指定RadioListTile而非同索引项全部被选中
优惠活动
大模型
产品
解决方案
定价
更多

Flutter如何单独选中指定RadioListTile而非同索引项全部被选中

问题根源

你当前所有ExpansionTile下的RadioListTile共用了同一个全局的dummy变量作为groupValue,单选按钮的选中逻辑是value == groupValue时就会显示选中状态,所以只要任意一个组里选中了值为i的选项,所有组里值为i的单选按钮都会满足选中条件,就出现了同步选中的问题。

解决方案

我们需要给每个ExpansionTile单独维护一个选中值,存储每个扩展项对应的选中子项索引:

  1. 将原来的单个int类型的dummy变量,替换为和addonItem长度一致的列表,每个位置存储对应ExpansionTile下选中的子项索引,初始为null代表未选中。
  2. 每个RadioListTile的groupValue绑定对应ExpansionTile位置的选中值。
  3. 选中时只修改当前ExpansionTile对应的选中值即可。

修正后完整代码

class Addon extends StatefulWidget {
  @override
  _AddonState createState() => _AddonState();
}

class _AddonState extends State<Addon> {
  List addonItem = ["Cool Drinks", "Extra Sauce"];
  // 每个元素对应对应位置ExpansionTile的选中子项索引
  List<int?> selectedAddonValues = [];

  @override
  void initState() {
    super.initState();
    // 初始化所有扩展项的选中值为null(未选中)
    selectedAddonValues = List.filled(addonItem.length, null);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        child: ListView.builder(
          dragStartBehavior: DragStartBehavior.down,
          physics: ScrollPhysics(),
          shrinkWrap: true,
          itemCount: addonItem.length,
          itemBuilder: (context, index) {
            return ExpansionTile(
              initiallyExpanded: false,
              title: Text(
                addonItem[index],
              ),
              children: [
                for (int i = 0; i < 3; i++)
                  RadioListTile(
                    value: i,
                    title: Text("item $i"),
                    // 绑定当前ExpansionTile对应的选中值
                    groupValue: selectedAddonValues[index],
                    activeColor: Theme.of(context).primaryColor,
                    onChanged: (val) {
                      print(val);
                      setState(() {
                        // 只修改当前ExpansionTile的选中值
                        selectedAddonValues[index] = val;
                      });
                      // 要获取所有选中的索引直接遍历selectedAddonValues即可
                    },
                  )
              ],
            );
          }),
      ),
    );
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 00:24:02