下拉列表中的复选框颤动
check Box in drop down list flutter
我在下拉菜单中使用复选框,但是当我选择复选框时没有任何变化,除非关闭菜单并再次打开这是我的代码
items: [
DropdownMenuItem(
child: Row(
children: <Widget>[
Checkbox(
onChanged: (bool value) {
setState(() {
isSat = value;});},
value: isSat,),
Text(
daysList[0]['days'],),],),),
DropdownMenuItem(
child: Row(
children: <Widget>[
Checkbox(
onChanged: (bool value) {
setState(() {
isFri = value;});},
value: isFri,),
Text(
daysList[6]['days'],),],),)
].toList(),
onChanged: (value) {},),
您需要用 StatefulBuilder
包裹所有复选框。您使用的 setState
仅适用于包含所有下拉菜单的小部件的状态,而不适用于复选框的状态。
这里是你如何做到的:
StatefulBuilder(
builder: (BuildContext context, StateSetter stateSetter) {
return Checkbox(
onChanged: (bool value) {
// note here we call stateSetter from the StatefulBuilder!
stateSetter(() {
// reverse the value
isFri = !isFri;
});
},
value: isFri,
);
}),
您必须为每个 CheckBox
小部件执行此操作。
我在下拉菜单中使用复选框,但是当我选择复选框时没有任何变化,除非关闭菜单并再次打开这是我的代码
items: [
DropdownMenuItem(
child: Row(
children: <Widget>[
Checkbox(
onChanged: (bool value) {
setState(() {
isSat = value;});},
value: isSat,),
Text(
daysList[0]['days'],),],),),
DropdownMenuItem(
child: Row(
children: <Widget>[
Checkbox(
onChanged: (bool value) {
setState(() {
isFri = value;});},
value: isFri,),
Text(
daysList[6]['days'],),],),)
].toList(),
onChanged: (value) {},),
您需要用 StatefulBuilder
包裹所有复选框。您使用的 setState
仅适用于包含所有下拉菜单的小部件的状态,而不适用于复选框的状态。
这里是你如何做到的:
StatefulBuilder(
builder: (BuildContext context, StateSetter stateSetter) {
return Checkbox(
onChanged: (bool value) {
// note here we call stateSetter from the StatefulBuilder!
stateSetter(() {
// reverse the value
isFri = !isFri;
});
},
value: isFri,
);
}),
您必须为每个 CheckBox
小部件执行此操作。