第二百零五回

文章目录

  • 概念介绍
  • 响应方法
    • 滑动事件
    • 点击事件
  • 经验总结

我们在上一章回中介绍了如何给ListView添加分隔线,本章回中将介绍ListView响应事件相关的知识.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

概念介绍

我们在这里说的ListView响应事件主要分两种类型,一种是滑动ListView时ListView做出响应,我们称其为滑动事件;另外一种是点击ListView中的某个项目时
ListVie做出响应,我们称其为点击事件。本章回中将详细介绍这两种事件相关的知识。

响应方法

滑动事件

响应滑动事件通过controller属性实现,只需要给该属性赋值就能响应滑动事件。赋值时需要创建ScrollController类型的对象,并且添加监听器,下面是示例代码:

//创建对象并且添加监听器
ScrollController _scrollController = ScrollController();_scrollController.addListener(() {//offset并不是ListView中的索引值print("offset---: ${_scrollController.offset}");//Position的信息多,包含了offsetprint("position---: ${_scrollController.position}");});//给controller属性赋值Widget listEx = ListView(controller: _scrollController,//其它内容省略不写}

在上面的代码中我们通过controller属性来响应滑动事件,当滑动ListView时ScrollController对象中的监听器会响应滑动事件,我们在监听器中打印出了滑动
偏移的距离,也就是代码中的offset。

点击事件

点击事件通过ListTitle中的onTap属性实现,在创建ListView时会有index参数,它表示ListView中某个项目的索引,把它通过参数传递给ListTitle对象,然
后在ListTitle对象的onTap属性中就可以使用该索引值,下面的示例代码中打印出了索引值,通过日志就能知道哪个项目被点击了,进而可以对点击事件做出响应,下
面是示例代码:

//在参数是会入索引,然后通过onTap来响应索引
ListTile listItem(IconData icon, String content,int index) {return ListTile(leading: Icon(icon,color: Colors.blue,),title: Text(content,style: const TextStyle(color: Colors.black,fontSize: 22,),),onTap:(){print(" Item $index onClicked");} ,);
}Widget listEx01 = ListView.builder(controller: _scrollController,itemCount: 8,itemExtent: 60,itemBuilder: (BuildContext context, int index) {//把索引值传递给ListTitlereturn listItem(Icons.ice_skating, "$index",index);},
);

在上面的代码中利用itemBuilder属性中的index参数可以得知ListView中哪个项目被点击了,然后把该index传递给ListTitle,也就是ListView中的某个项目,
在该项目的onTap属性中把传递来的index打印出来,从打印出的日志中可以得知哪个项目被用户点击了。打印日志只是一个简单的响应动作,大家可以依据项目的需求
做响应动作,不必拘泥于示例代码中打印日志这种响应动作。上面的代码

经验总结

滑动事件主要明白controller属性以及监听器中的offset,通过offset可以在屏幕上快速跳转。注意offset是从屏幕顶部开始计算的,其单位是像素,它表示从顶
部到滑动位置的偏移值,有些看官可能会认为它是ListView中的索引值,这种观点是错误的,只能说明这位看官把它与点击事件中的index混淆了。
点击事件主要明白indext和onTap属性就可以。index是索引值,它是创建ListView中某个项目时传递来的,通过它可以得知ListView中哪个项目被点击了,onTap
属性是项目的属性,通过该属性可以让项目响应点击事件。在实际项目中使用ListVeiw时需要响应滑动事件和点击事件,不过点击事件使用频率相对高一些。因此,大家
可以重点掌握点击事件的内容。
看官们,关于"ListView响应事件"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/749517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习模型移植】用torch普通算子组合替代torch.einsum方法

首先不得不佩服大模型的强大之处,在算法移植过程中遇到einsum算子在ONNX中不支持,因此需要使用普通算子替代。参考TensorRT - 使用torch普通算子组合替代torch.einsum爱因斯坦求和约定算子的一般性方法。可以写出简单的替换方法,但是该方法会…

【Flask开发实战】项目介绍-防火墙规则查询系统

一、前言 硬件防火墙为常备主用网络安全设备,主要通过网络访问控制方式实现安全防护。 不同厂家防火墙的网络访问控制功能均采用同样的模式操作:防火墙配置若干条防火墙规则,当IP包到来,防火墙根据包的五元组属性(协…

突破编程_前端_JS编程实例(工具栏组件)

1 开发目标 工具栏组件旨在模拟常见的桌面软件工具栏,所以比较适用于 electron 的开发,该组件包含工具栏按钮、工具栏分割条和工具栏容器三个主要角色,并提供一系列接口和功能,以满足用户在不同场景下的需求: 点击工具…

【MatLab】之:Simulink安装

一、内容简介 本文介绍如何在 MatLab 中安装 Simulink 仿真工具包。 二、所需原材料 MatLab R2020b(教学使用) 三、安装步骤 1. 点击菜单中的“附加功能”,进入附加功能管理器: 2. 在左侧的“按类别筛选”下选择Using Simulin…

Linux网络编程: IP协议详解

一、TCP/IP五层模型 物理层(Physical Layer):物理层是最底层,负责传输比特流(bitstream)以及物理介质的传输方式。它定义了如何在物理媒介上传输原始的比特流,例如通过电缆、光纤或无线传输等。…

购票小程序有哪些功能

​通过小程序购买电子票,然后在使用时,出示电子票二维码,由商家进行验证/核销。通过小程序购票和核销,使得整个流程非常顺利,免去了线下购票的繁琐,而且还容易遗失。下面我们就来具体看一下小程序如何进行购…

Postman进行Websocket接口测试

Postman进行Websocket接口测试 前言下载地址使用1、new一个一个WebSocket Request2、填写内容和需要请求头携带的参数3、表示成功 网页请求101表示握手成功 前言 有些较低版本postman不支持websocket接口测试,如果根据此文未找到创建websocket接口测试的目录&#…

面向对象(C# )

面向对象(C# ) 文章目录 面向对象(C# )ref 和 out传值调用和引用调用ref 和 out 的使用ref 和 out 的区别 结构体垃圾回收GC封装成员属性索引器静态成员静态类静态构造函数拓展方法运算符重载内部类和分布类 继承里氏替换继承中的…

Qt 鼠标滚轮示例

1.声明 void wheelEvent(QWheelEvent *event) override;2.实现&#xff08;方便复制、测试起见用静态变量&#xff09; #include <mutex> void MainWindow::wheelEvent(QWheelEvent *event) {static QLabel *label new QLabel("Zoom Level: 100%", this);st…

elementUi中表格超出一行省略,鼠标放入显示完整提示

一、想要的效果 二、代码&#xff0c;加入show-overflow-tooltip即可 <el-table-column min-width"220" prop"content" show-overflow-tooltip> </el-table-column>

PCB设计中的MARKER

今天在给板子布局的时候发现了一个这样的东西&#xff0c;名叫MARKER&#xff0c;查了一下这个东西分享一下&#xff1a; 目录 MARKER是什么样的&#xff1f; MARKER的用途&#xff1a; MARKER是必须的吗&#xff1f; MARKER是什么样的&#xff1f; 他在PCB中是这样的&…

web 课程

文章目录 格式图片超链接书签链接表格例子横跨束跨 格式 <br /> <br/> #换行图片 <img> 标签是用于在网页中嵌入图像的 HTML 标签&#xff0c;它有一些属性可以用来控制图像的加载、显示和交互。以下是对 <img> 标签常用属性的详细介绍&#xff1a;…

MySQL基础架构

文章目录 MySQL基础架构一、连接器 - 建立连接&#xff0c;权限认证二、查缓存 - 提高效率三、分析器 - 做什么四、优化器 - 怎么做五、执行器 - 执行语句六、存储引擎1、存储引擎的概述2、存储引擎的对比3、存储引擎的命令4、存储引擎的选择 MySQL基础架构 大体来说&#xff…

旅游管理系统 |基于springboot框架+ Mysql+Java+Tomcat的旅游管理系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 管理员功能登录前台功能效果图 系统功能设计 数据库E-R图设计 lunwen参考 摘要 研究…

Transformer面试题总结101道

在本文中&#xff0c;我们将回答一系列关于Transformer的问题&#xff0c;涵盖了从基础概念到高级应用的多个方面。无论您是准备面试、学习深度学习&#xff0c;还是对自然语言处理技术感兴趣&#xff0c;都希望本文能为您提供有益的启示和知识。 注&#xff0c;本文的面试题借…

idea中database的一些用法

1、查看表结构 方法1&#xff0c;右键&#xff0c;选这个 方法2 双击表后&#xff0c;看到数据&#xff0c;点DDL 方法3 写SQL时&#xff0c;把鼠标放在表名上&#xff0c;可以快速查看表结构 2、表生成对应的实体类 表中右键&#xff0c;选择这2个&#xff0c;选择生成的路…

FPGA和ASIC

前言 大家好&#xff0c;我是jiantaoyab&#xff0c;这是我所总结作为学习的笔记第16篇,在本篇文章给大家介绍FPGA和ASIC。 一个四核i7的CPU的晶体管中有20亿的晶体管&#xff0c;需要链接起20亿的晶体管可不是一件容易的事情&#xff0c;所以设计一个CPU需要用年来算&#x…

【代码随想录】【回溯算法】补day24:组合问题以及组合的优化

回溯算法&#xff1a;递归函数里面嵌套着for循环 给定两个整数 n 和 k&#xff0c;返回 1 … n 中所有可能的 k 个数的组合。 示例: 输入: n 4, k 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 包含组合问题和组合问题的剪枝优化 class solution:def combine(se…

C# 第三方曲线库及其特点

在 C# 中&#xff0c;有几个第三方库可以用于绘制曲线图&#xff0c;每个库都有自己的特点和优势。以下是一些常见的 C# 第三方曲线库及其特点&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.LiveC…

力扣L10--- 3. 无重复字符的最长子串--2024年3月14日

1.题目 2.知识点 注1&#xff1a;containsKey 是 Java 中 HashMap 类的一个方法&#xff0c;用于检查哈希表中是否包含指定的键。 注2&#xff1a;在哈希表&#xff08;HashMap)中&#xff0c;每个键对应着唯一的值&#xff0c;因此键不能重复&#xff0c;但值可以重复。 (1)创…