flutter - 在 AlertDialog 中获取复选框

标签 flutter dart dialog flutter-layout flutter-alertdialog

我添加了 AlertDialog , 其中一个 Checkbox是,但如果我点击 Checkbox ,它没有钩子(Hook)。我还添加了另一个 Checkbox低于AlertDialog这个通过点击它会得到一个钩子(Hook)。我认为它与 setState() 有关系要做,但我不知道。有人知道解决方案吗?提前致谢

ListTile(
                title: Text("Test"),
                trailing: Icon(Icons.fitness_center),
                onTap: () {
                  showDialog(
                    context: context,
                    builder: (BuildContext context) {
                      return AlertDialog(
                        title: Text("Test"),
                        content: Column(
                          children: <Widget>[
                            Row(
                              children: <Widget>[
                                Checkbox(
                                  value: checkBoxValueTheraband,
                                  onChanged: (bool value) {
                                    setState(() {
                                      checkBoxValueTheraband = value;
                                      exerciseChooser();
                                    });
                                  },
                                ),
                                Text("Theraband"),
                              ],
                            ),),);});})

最佳答案

您在 showDialog 中使用的 setState 不是它“拥有”的,这意味着它不会重建其中的任何内容,并且实际上会更新“拥有”它的父级的状态。相反,你给它自己的StatefulBuilder有自己的 StateSetter setState 作为参数。现在,当使用 setState 时,它​​将调用构建器并更改此小部件中任何内容的状态。

 content: StatefulBuilder(
             builder: (BuildContext context, StateSetter setState) {
                return  Column(
                          children: <Widget>[
                            Row(
                              children: <Widget>[
                                Checkbox(
                                  value: checkBoxValueTheraband,
                                  onChanged: (bool value) {
                                    setState(() { 
                                   checkBoxValueTheraband = value;
                                      exerciseChooser();
                                    });
                                  },
                                ),
                                Text("Theraband"),

                              ]),

                            ]);

                   }
               )

关于flutter - 在 AlertDialog 中获取复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61548703/

相关文章:

firebase - 如何在 flutter 和 firebase 中注册新用户?

dart - 在 Angular Dart 中单击按钮动态创建和添加新组件

c++ - ReadFile() 输出到 WinAPI 编辑对话框

android - 在第一个对话框中单击按钮显示第二个对话框关闭第一个对话框

android - 使用缓存引擎启动 FlutterActivity 子类

android - 尝试将音频 Assets 设置为 Android 上的铃声

object - 创建一个对象并编码数据 Flutter

string - 如何在 Dart 中删除字符串的特定部分?

flutter - 在页面焦点事件上出现抖动?

facebook - 必须使用 session key 调用 Iframe 对话框