📜  Flutter复选框(1)

📅  最后修改于: 2023-12-03 14:41:17.194000             🧑  作者: Mango

Flutter复选框介绍

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,当用户选中/取消选中时,我们可以通过遍历所有的数据项来一次性改变它们的状态。