utils/controllers/list_select library
列表选择状态管理控制器
使用方式:
- 在父组件中使用 ListSelectScope 包裹列表:
ListSelectScope<ProjectItem>(
controller: _controller, // 外部传入 controller
child: YourListView(),
)
- 父组件通过 controller 控制选择状态:
// 创建 controller
final controller = ListSelectController<ProjectItem>();
// 切换选择模式
controller.toggleSelectMode();
controller.setSelectMode(true);
// 全选/取消全选
controller.selectAll(['id1', 'id2']);
controller.selectAllByItems(items);
controller.deselectAll();
// 获取已选 id
controller.selectedIds
controller.selectedCount
// 退出选择模式(清空选择)
controller.exitSelectMode();
- 子组件直接通过 context 使用:
// 判断是否在选择模式
context.isSelectMode<ProjectItem>()
// 判断当前项是否选中
context.isItemSelectedByScope<ProjectItem>(item)
// 切换选择状态
context.toggleItemSelectionByScope<ProjectItem>(item)
// 获取已选数量
context.selectedCount<ProjectItem>()
Classes
-
ListenedListSelectInherited<
T> - 监听 controller 状态变化的 InheritedWidget
-
ListSelectController<
T> - 选择控制器(供父组件使用)
-
ListSelectInherited<
T> - InheritedWidget 封装
-
ListSelectScope<
T> - 父容器组件
-
ListSelectState<
T> - 选择状态管理器