我添加了一个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"),
]),
]);
}
)