在AlertDialog中获得一个复选框。

问题描述 投票:0回答:1

我加了一个 AlertDialog,其中a Checkbox 是,但如果我点击 Checkbox它没有得到一个钩子。我还添加了另一个 Checkbox 下面 AlertDialog 而这个通过点击就能得到一个钩子。我认为它与 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"),
                              ],
                            ),),);});})
flutter dart dialog flutter-layout flutter-alertdialog
1个回答
1
投票

钩子 设置国家 您在 显示对话框 并不是它 "拥有 "的,这意味着它不会重建其中的任何东西,也不会实际更新 "拥有 "它的父节点的状态。相反,你给它自己的 StatefulBuilder 有自己的 读取数据 作为一个参数。现在当 设置国家 它将调用 建筑商 并改变此小组件中任何东西的状态。

 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"),

                              ]),

                            ]);

                   }
               )
© www.soinside.com 2019 - 2024. All rights reserved.