Flutter中的AlertDialog小部件内部的单选按钮小部件不起作用

时间:2019-02-17 15:02:23

标签: dart flutter

我希望用户选择“单选按钮”中提供的选项,然后再移动到“我的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;
});
}

3 个答案:

答案 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示例