📅  最后修改于: 2023-12-03 14:41:17.194000             🧑  作者: Mango
Flutter复选框(Checkbox)是一种常用的UI元素,可以选择或取消选择一个或多个项目。这个小部件的显示是由一个快速可视的开关(Switch)方案组成的,在这个开关方案中,填充部分表示选中状态,而边框和背景部分则表示未选中状态。
Checkbox(
value: true,
onChanged: (bool value) {
setState(() {
isChecked = value;
});
},
)
在上面的例子中,value
属性代表这个复选框的状态(选中/未选中),当onChanged
回调函数被触发时,我们可以通过setState
方法来改变复选框的状态。
如果需要收集多个复选框的值,我们可以将复选框封装在一个CheckboxListTile
中,并将其添加到一个ListView
中。当用户触发“全选”按钮时,可以通过一个布尔值来控制所有子复选框的状态。
bool _selectAll = false;
List<Map<String, dynamic>> _dataList = [
{'title': '复选框1', 'isChecked': false},
{'title': '复选框2', 'isChecked': false},
{'title': '复选框3', 'isChecked': false},
];
ListView.builder(
itemCount: _dataList.length,
itemBuilder: (BuildContext context, int index) {
return CheckboxListTile(
title: Text(_dataList[index]['title']),
value: _dataList[index]['isChecked'],
onChanged: (bool value) {
setState(() {
_dataList[index]['isChecked'] = value;
});
},
);
},
);
CheckboxListTile(
title: Text('全选'),
value: _selectAll,
onChanged: (bool value) {
setState(() {
_selectAll = value;
_dataList.forEach((element) {
element['isChecked'] = value;
});
});
},
);
以上的例子中,我们使用了ListView.builder
来动态生成复选框列表。CheckboxListTile
作为一个小装饰品包含了复选框和文本,非常方便。全选按钮也是一个CheckboxListTile
,当用户选中/取消选中时,我们可以通过遍历所有的数据项来一次性改变它们的状态。