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

MSA*_*ish 7 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),
                    ],
            ));
      },
    ),
Run Code Online (Sandbox Code Playgroud)

选择收音机功能

void selectRadio(int value)
{
setState(() {
  groupValue=value;
});
}
Run Code Online (Sandbox Code Playgroud)

b.j*_*ohn 31

我遇到过同样的问题。我用这个解决了它:

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);
                },
              );
            }),
          );
        },
      ),
    );
  },
Run Code Online (Sandbox Code Playgroud)


Har*_*llu 7

正如我所说,上面的评论showDialog 创建了新的上下文,因此调用小部件上的 setState 不会影响对话框 您可以创建新的有状态小部件命名 MyDialog。检查这个要点,这样你就可以得到它(它使用下拉菜单,但你可以用同样的方式实现无线电小部件)。