当前位置: 首页 > news >正文

【Flutter】drag_select_grid_view: ^0.6.2 使用

组件网址:drag_select_grid_view | Flutter package

这个组件就是滑动选中功能。

使用起来跟GridView差不多

import 'package:drag_select_grid_view/drag_select_grid_view.dart';class MyWidget extends StatefulWidget {@override_MyWidgetState createState() => _MyWidgetState();
}class _MyWidgetState extends State<MyWidget> {final DragSelectGridViewController controller = DragSelectGridViewController();final List<String> items = List.generate(20, (index) => 'Item $index');@overridevoid initState() {super.initState();// 监听选择变化controller.addListener(() {print('选中: ${controller.value.amount} 项');});}@overrideWidget build(BuildContext context) {return DragSelectGridView(gridController: controller,itemCount: items.length,itemBuilder: (context, index, selected) {return Card(color: selected ? Colors.blue[100] : Colors.white,child: Center(child: Text(items[index])),);},gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2,),);}@overridevoid dispose() {controller.dispose();super.dispose();}
}

核心API

控制器方法

以下是ai生成的,其实第一个跟第二个根本没有,但是让AI生成代码的时候它老是用前面两个

// 选择/取消选择
controller.selectIndex(0);           // 选择索引0
controller.deselectIndex(0);         // 取消选择索引0
controller.clear();                  // 清空所有选择// 获取状态
controller.value.selectedIndexes;    // 获取选中索引集合
controller.value.amount;             // 获取选中数量
controller.value.isSelecting;        // 是否有选中项

选中下标存储Selection

controller.value指的就是Selection

在这里插入图片描述
在这里插入图片描述

选中的item下标会存在Selection的selectedIndexes里面,如果要全选的话也可以通过以下代码赋值。

dragController.value = Selection(indexes);

使用起来很简单。

问题

drag_select_grid_view有一个跟我项目需求不符合的地方,这就要进行额外的处理,那就是当选择的item数量为0的时候会退出编辑模式,而我希望编辑模式由用户退出,或者是进行了删除等操作之后再自动退出。

/// Whether the grid is currently in select mode.bool get isSelecting => amount > 0;
http://www.xdnf.cn/news/1466677.html

相关文章:

  • AI架构师的思维方式与架构设计原则
  • 【LeetCode - 每日1题】最少操作使num1归零
  • Bean作用域和生命周期
  • Golang中的context包介绍及源码阅读
  • 谙流 ASK 技术解析(一):秒级扩容
  • Android,jetpack Compose模仿QQ侧边栏
  • 华为云昇腾云服务
  • 数据安全成焦点:基于Hadoop+Spark的信用卡诈骗分析系统实战教程
  • 为什么外网主机可以telnet通内网nginx端口,但是http请求失败?
  • Mysql:由逗号分隔的id组成的varchar联表替换成对应文字
  • Tenda AC20路由器缓冲区溢出漏洞分析
  • iOS 抓包工具有哪些?开发、测试与安全场景的实战选择
  • 软考 系统架构设计师系列知识点之杂项集萃(140)
  • 使用 chromedp 高效爬取 Bing 搜索结果
  • 安装Codex(需要用npm)
  • Chrome 插件开发入门指南:从基础到实践
  • 达梦数据守护集群监视器详解与应用指南
  • vsan高可用:确保可访问性、全部数据迁移,两种类型权衡
  • 软件启动时加配置文件 vs 不加配置文件
  • Go 1.25.1基本包
  • 凌力尔特(LINEAR)滤波器LTC1068的二阶滤波器模块设计
  • STM32 USBx Device HID standalone 移植示例 LAT1466
  • 全球企业内容管理ECM市场规模增长趋势与未来机遇解析
  • (4)什么时候引入Seata‘‘
  • 黄金上门回收小程序开发
  • 多路转接介绍及代码实现
  • Rust 基础语法
  • 设计模式笔记
  • 从技术选型到现场配置:DDC 楼宇自控系统全流程落地方案(2025 版)
  • 织信低代码:用更聪明的方式,把想法变成现实!