utils/controllers/list_select library

列表选择状态管理控制器

使用方式:

  1. 在父组件中使用 ListSelectScope 包裹列表:
ListSelectScope<ProjectItem>(
  controller: _controller,  // 外部传入 controller
  child: YourListView(),
)
  1. 父组件通过 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();
  1. 子组件直接通过 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>
选择状态管理器

Extensions

ListSelectContextExtension on BuildContext
便捷扩展