我希望用户选择“单选按钮”中提供的选项,然后再移动到“我的Flutter应用程序”中的第二页。我正在显示的Alertdialog中显示单选按钮小部件,但选择后单选按钮未更改。
所有国家/地区类别
floatingActionButton: FloatingActionButton(
child: Icon(Icons.create),
onPressed: () {
return showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text("Select Grade System and No of Subjects"),
actions: <Widget>[
Radio(value: 0, groupValue: groupValue, onChanged: selectRadio),
Radio(value: 1, groupValue: groupValue, onChanged: selectRadio),
],
));
},
),
selectRadio功能
void selectRadio(int value)
{
setState(() {
groupValue=value;
});
}
答案 0 :(得分:1)
正如我所说的,以上评论 showDialog创建了新的上下文,因此调用小部件上的setState不会影响对话框 您可以创建命名为MyDialog的新的有状态小部件。Checkout this gist可以获取它(它使用下拉菜单,但您可以以相同的方式实现单选小部件)。
答案 1 :(得分:1)
我有同样的问题。我使用以下方法解决了这个问题:
showDialog<void>(
context: context,
builder: (BuildContext context) {
int selectedRadio = 0;
return AlertDialog(
content: StatefulBuilder(
builder: (BuildContext context, StateSetter setState) {
return Column(
mainAxisSize: MainAxisSize.min,
children: List<Widget>.generate(4, (int index) {
return Radio<int>(
value: index,
groupValue: selectedRadio,
onChanged: (int value) {
setState(() => selectedRadio = value);
},
);
}),
);
},
),
);
},
答案 2 :(得分:0)
custom language popup 您需要创建单独的statefulwidget类来处理单选按钮的状态。请参阅this示例