I would like to create a list of data that is called JSON with radio button. However, when I select any of the radio buttons it is selecting each and every radio button rather than selecting one. And, how can I get the selected radio button's value when I click on the button?
I am new to flutter. Is it any solution can solve these type of problems?
Here is my code
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: <Widget>[
Container(
height: 270,
color: Colors.white,
child: CustomScrollView(
slivers: [
SliverList(
delegate: SliverChildBuilderDelegate(
(context, i) {
return Column(
children: <Widget>[
Container(
width: 450,
padding: EdgeInsets.all(7.0),
margin: EdgeInsets.only(right: 8.0, left: 8.0, top: 10.0),
decoration: BoxDecoration(
border: Border.all(color: const Color(0xffededed)),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.max,
children: <Widget> [
Text(modelOptions[i].optionName.toString(),
style: TextStyle(
fontSize: 18,
color: Colors.amber,
),
),
],
),
),
Container(
margin: EdgeInsets.only(left: 8.0, right: 8.0),
padding: EdgeInsets.all(7.0),
decoration: BoxDecoration(
border:
Border.all(color: const Color(0xffededed)),
),
child: ListView.builder(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
itemCount: modelOptions[i].modelOptionValues.length,
itemBuilder: (context, j) {
return
Row(
mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Radio(
groupValue: selectedRadio,
value: modelOptions[i].modelOptionValues[j].optionValueID,
activeColor: Colors.orangeAccent,
onChanged:(value) {
setState(() {
value = modelOptions[i].modelOptionValues[j].optionValueID.toString();
selectedRadio = value;
print("check radio: ${selectedRadio}");
showToastMessage('${selectedRadio} is selected'); //get the selected radio button's value.
});
}),
});
}),
Text(
modelOptions[i].modelOptionValues[j].valueName,
style: TextStyle(
color: Colors.black, fontSize: 16,
),),
],
);
}))
],
);
},
childCount: modelOptions.length,
),
),
],
)),
],
));
}
CodePudding user response:
Radio(
groupValue: selectedRadio,
activeColor: Colors.orangeAccent,
onChanged: (val) {
setState(() {
selectedRadio = val;
showToastMessage(
"' the value ?? ' is selected"); //get the selected radio button's value.
});
}),
You're using one source of truth for the Radio's value selectedRadio
. You should be updating the value for an index. Furthermore you're passing the value to the groupValue
parameter instead of the value
parameter. groupValue
is how you... toggle the group.