You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Flutter 3.35.2中Radio组件已废弃的groupValue和onChanged属性的替代方案咨询

Flutter 3.35.2中Radio组件已废弃的groupValue和onChanged属性的替代方案咨询

嗨,刚好对Flutter 3.35.2这个版本的Radio组件变更有了解,给你说下具体的替代方案哈!

Flutter在3.35.x版本里确实把单个Radio组件的groupValueonChanged标记为废弃了,官方的设计思路是把单选组的状态管理逻辑从单个Radio中抽离出来,统一交给新引入的RadioGroup组件来处理,这样代码的职责划分会更清晰。

具体的迁移方式可以按以下步骤来:

  • 不再需要在单个Radio上设置groupValueonChanged属性
  • 把同组的所有Radio组件包裹在RadioGroup内部,由RadioGroup来管理整个组的选中状态和变化回调
  • RadioGroup需要传入两个核心参数:
    • value:对应原来的groupValue,表示当前组中选中的值
    • onChanged:对应原来的onChanged,当选中项发生变化时触发的回调

针对你给出的简化代码,迁移后的写法大概是这样的:

// 假设你之前用setState管理groupValue,现在把逻辑移到RadioGroup里
RadioGroup(
  value: groupValue,
  onChanged: (newValue) {
    setState(() {
      groupValue = newValue;
    });
  },
  child: Column(
    children: [
      Radio(
        splashRadius: 0,
        value: value1, // 当前Radio对应的值
        activeColor: const Color(0xff7168d3),
      ),
      Radio(
        splashRadius: 0,
        value: value2, // 同组另一个Radio对应的值
        activeColor: const Color(0xff7168d3),
      ),
      // 同组的其他Radio都按这个格式写
    ],
  ),
)

另外补充一点:如果你的场景中真的只需要一个独立的Radio(这种情况非常少见),可以使用Radio.standalone构造函数,它保留了onChanged属性,但一般单选功能都是成组使用的,所以优先推荐用RadioGroup的方案。

内容来源于stack exchange

火山引擎 最新活动