flutter使用单选框。
我使用了List<string> = ['item1','item2','item3'],用foreach方式去初始化radioListTile,出现点击item触发onchaged事件,但选中状态没有改变,这是为什么???
widget.options 是一个List [“item1”, "item2", “item3”]
String groupValue; // 整个单选组值, groupValue == value则选中
List<Widget>optionChildren = new List<Widget>();
void initState() {
super.initState();
groupValue = widget.options[0]; // 默认选中第一个
widget.options.forEach(
(item) {
print(item);
Widget itemWidget = new RadioListTile<String>(
value: item,
activeColor: Colors.red,
title: Text(item),
groupValue: groupValue,
onChanged: (val){
print("change${val} ${groupValue}");
setState(() {
groupValue = val;
print("change${val} ${groupValue}");
});
},
);
optionChildren.add(itemWidget);
}
);
}
Widget build(BuildContext context) {
return new Column(
children: optionChildren
);
}
尝试过直接手动添加radioListTile选中状态是会改变的,目前问题现在的选项内容是不固定的,从服务端获取,请问该怎么办???没辙了
@override
Widget build(BuildContext context) {
return new Column(
children: <Widget>[
new RadioListTile<String>(
value: "苹果",
activeColor: Colors.red,
title: Text("苹果"),
groupValue: groupValue,
onChanged: (val){
print("change${val} ${groupValue}");
setState(() {
groupValue = val;
print("change${val} ${groupValue}");
});
},
),
new RadioListTile<String>(
value: "香蕉",
activeColor: Colors.red,
title: Text("苹果"),
groupValue: groupValue,
onChanged: (val){
print("change${val} ${groupValue}");
setState(() {
groupValue = val;
print("change${val} ${groupValue}");
});
},
)
],
);
}
initstate只执行一次,所以ui不会变化;
放到之外定义即可解决该问题