在警报对话框中获取复选框



我添加了一个AlertDialog,其中有一个Checkbox,但是如果我点击Checkbox,它没有钩子。我还在AlertDialog下方添加了另一个Checkbox,这个通过单击它来获得一个钩子。我认为它有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"),
]),
]);
}
)

相关内容

  • 没有找到相关文章

最新更新