如何将Flutter RadioListTile初始设置为未选中状态?
解决RadioListTile初始未选中的问题
要让性别选择的RadioListTile初始处于未选中状态,核心是让分组值(groupValue)的初始值与所有选项的value都不匹配,具体操作如下:
先确认你的
Gender枚举定义,确保包含三个选项:enum Gender { man, women, other }调整存储选中状态的变量初始值为
null(你的代码用了Gender?可空类型,刚好适配):
从代码里的widget.Gender.value推测你用了ValueNotifier管理状态,初始化时要设为null:final ValueNotifier<Gender?> genderNotifier = ValueNotifier(null);修改RadioListTile的代码结构,三个选项的
groupValue都绑定到这个初始为null的变量,这样初始时没有任何选项的value等于null,自然不会选中任何项:
Container( width: 400, height: 200, child: Column( children: [ RadioListTile<Gender?>( title: const Text('MR.'), value: Gender.man, groupValue: widget.genderNotifier.value, onChanged: (Gender? value) { if (value != null) { setState(() { widget.genderNotifier.value = value; }); } }, ), RadioListTile<Gender?>( title: const Text('Ms.'), value: Gender.women, groupValue: widget.genderNotifier.value, onChanged: (Gender? value) { if (value != null) { setState(() { widget.genderNotifier.value = value; }); } }, ), RadioListTile<Gender?>( title: const Text('other'), value: Gender.other, groupValue: widget.genderNotifier.value, onChanged: (Gender? value) { if (value != null) { setState(() { widget.genderNotifier.value = value; }); } }, ), ], ), )
关键逻辑说明
RadioListTile的选中规则是:当groupValue等于当前tile的value时,该tile会被选中。初始把groupValue设为null,而所有选项的value都是Gender枚举的具体值,三者都不等于null,所以初始状态下没有任何选项被选中,用户可自行选择。
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

