当用户选中另一个复选框时取消选中一个复选框(复选框的布尔值在地图中)
Uncheck a checkbox when user checking another one (bool of checkbox is in a map)
我的应用程序中有几个复选框,我希望当用户选中一个复选框时,其他复选框未选中。这通常一点也不难,但问题是我在地图中有 bool 和复选框的标题。如何取消选中除用户选中的复选框以外的所有复选框?
这是地图:
Map<String, bool> filterOptions = {
'Test1': false,
'Test2': false,
};
这是我“构建”复选框的代码:
ListView(
scrollDirection: Axis.vertical,
shrinkWrap: true,
children: filterOptions.keys.map((String key) {
return CheckboxListTile(
title: Text(key),
value: filterOptions[key],
onChanged: (bool value) {
setState(() {
filterOptions[key] = value;
});
},
);
}).toList(),
),
您要查找的不是复选框,而是 Radio Button。您一次只能 select 一个单选按钮,您不必手动检查状态。但是,如果您坚持使用复选框,则可以遍历地图
filterOptions.forEach((key, value) => filterOptions[key] = false);
如果将值设置为 false,则只会更改值的副本。您可以考虑放弃地图并选择单个 int selectedBox
变量。
复选框的用途是用于多个用户组选择。
换句话说,如果你想在用户选择另一个选项时取消选择,那么
RadioButton
将是最佳选择。
SingingCharacter _character = SingingCharacter.lafayette;
Widget build(BuildContext context) {
return Column(
children: <Widget>[
ListTile(
title: const Text('Male'),
leading: Radio(
value: SingingCharacter.lafayette,
groupValue: _character,
onChanged: (SingingCharacter value) {
setState(() {
_character = value;
});
},
),
),
ListTile(
title: const Text('Female'),
leading: Radio(
value: SingingCharacter.jefferson,
groupValue: _character,
onChanged: (SingingCharacter value) {
setState(() {
_character = value;
});
},
),
),
],
);
}
截图
我的应用程序中有几个复选框,我希望当用户选中一个复选框时,其他复选框未选中。这通常一点也不难,但问题是我在地图中有 bool 和复选框的标题。如何取消选中除用户选中的复选框以外的所有复选框?
这是地图:
Map<String, bool> filterOptions = {
'Test1': false,
'Test2': false,
};
这是我“构建”复选框的代码:
ListView(
scrollDirection: Axis.vertical,
shrinkWrap: true,
children: filterOptions.keys.map((String key) {
return CheckboxListTile(
title: Text(key),
value: filterOptions[key],
onChanged: (bool value) {
setState(() {
filterOptions[key] = value;
});
},
);
}).toList(),
),
您要查找的不是复选框,而是 Radio Button。您一次只能 select 一个单选按钮,您不必手动检查状态。但是,如果您坚持使用复选框,则可以遍历地图
filterOptions.forEach((key, value) => filterOptions[key] = false);
如果将值设置为 false,则只会更改值的副本。您可以考虑放弃地图并选择单个 int selectedBox
变量。
复选框的用途是用于多个用户组选择。 换句话说,如果你想在用户选择另一个选项时取消选择,那么
RadioButton
将是最佳选择。
SingingCharacter _character = SingingCharacter.lafayette;
Widget build(BuildContext context) {
return Column(
children: <Widget>[
ListTile(
title: const Text('Male'),
leading: Radio(
value: SingingCharacter.lafayette,
groupValue: _character,
onChanged: (SingingCharacter value) {
setState(() {
_character = value;
});
},
),
),
ListTile(
title: const Text('Female'),
leading: Radio(
value: SingingCharacter.jefferson,
groupValue: _character,
onChanged: (SingingCharacter value) {
setState(() {
_character = value;
});
},
),
),
],
);
}
截图