我正在创建动态单选按钮并设法显示它。但是,当我点击它时,它没有更改选择。我可以看到onchanged事件被激发。我正在获取输出,但我认为SetState没有按预期工作。
下面是代码。
class FruitsList {
String name;
int index;
FruitsList({this.name, this.index});
}
int _selectedRadioIndex = 1;
// Default Radio Button Item
String radioItem = 'Mango';
// Group Value for Radio Button.
int id = 1;
List<FruitsList> fList = [
FruitsList(
index: 1,
name: "Mango",
),
FruitsList(
index: 2,
name: "Apple",
),
FruitsList(
index: 3,
name: "Banana",
),
FruitsList(
index: 4,
name: "Cheery",
),
];
Column(
children:
fList.map((data) => RadioListTile(
title: Text("${data.name}"),
groupValue: id,
value: data.index,
onChanged: (val) {
setState(() {
radioItem = data.name ;
id = data.index;
print(id);
print(radioItem);
print(val);
_selectedRadioIndex = val;
});
},
)).toList(),
),
我哪里做错了?
更新
如春虎君所言。
我试过了。
showDialog(
context: context,
builder: (context) {
return StatefulBuilder(
builder: (context, setState) {
Column(
children:
fList.map((data) => RadioListTile(
title: Text("${data.name}"),
groupValue: id,//_selected,//id,
value: data.index,
onChanged: (val) {
setState(() {
radioItem = data.name ;
id = data.index;
print(id);
print(radioItem);
print(val);
_selectedRadioIndex = val;
});
},
)).toList(),
);
}
);
},
);
但是在这些地方它给出了错误。
showDialog(
context: context,
builder: (context) {
'showDialog' must have a method body because '_ApointmentPriceState' isn't abstract.
Try making '_ApointmentPriceState' abstract, or adding a body to 'showDialog'.
5条答案
按热度按时间tf7tbtn21#
你可以复制粘贴运行下面的完整代码
您可以将
Row
与StatefulBuilder
Package 在一起,并使用List<int> _selectedRadioIndexList
和CardNo
来控制代码片段
工作演示
全码
pftdvrlh2#
chhqkbe13#
您将组值设置为
id
,但在setState中更改的是_selectedRadioIndex
,请按如下方式更改代码:o2rvlv0m4#
我只是遇到了同样的问题,发现所有这些解决方案都很复杂。
我的解决方案是先创建一个空的Map,使用你的无线电设备唯一的键类型,对我来说int就足够了:
然后对groupValue使用此值:
设置新值时:
小部件的完整代码:
ntjbwcob5#
如果使用radioGroup微件
这里返回小部件...
}