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

flutter事件与消息通知

事件与消息通知

一、原始指针事件(触摸事件)

  • 命中测试

    • 事件阶段:手指按下、手指移动、手指抬起
    • 事件冒泡,无法停止冒泡
  • Listener 组件:监听原始触摸事件

    • onPointerDown:手指按下回调
    • onPointerMove:手指移动回调
    • onPointerUp:手指抬起回调
    • onPointerCancel:触摸事件取消回调
    • behavior:决定子组件如何响应命中测试
    • 参数 PointerDownEvent、 PointerMoveEvent、 PointerUpEvent 都是PointerEvent的子类,PointerEvent类中包括当前指针的信息
      • position:是指针相对于当对于全局坐标的偏移
      • localPosition: 是指针相对于本身布局坐标的偏移
      • delta:两次指针移动事件(PointerMoveEvent)的距离
      • pressure:按压力度,如果手机屏幕不支持压力传感器,则始终为1
      • orientation:指针移动方向,是一个角度值
  • 忽略指针事件(阻止子树接收指针事件)

    • AbsorbPointer:本身会参与命中测试,即本身是可以接收指针事件的(但其子树不行)
    • IgnorePointer:本身不会参与指针事件,即不可以接收指针事件

二、手势识别

  • GestureDetector:用于手势识别
    • onPanDown:手指按下
    • onDoubleTap:双击
    • onLongPress:长按
    • onPanUpdate:拖动更新
    • onPanEnd:滑动结束
    • onVerticalDragUpdate:垂直方向拖动
    • onScaleUpdate:缩放更新
  • GestureRecognizer:通过Listener来将原始指针事件转换为语义手势

三、事件机制

  • 事件处理流程
    • 深度优先遍历渲染树,依次进行【命中测试】->【事件分发】->【事件清理】
  • 命中测试
    • 如果当前节点有子节点通过了命中测试或者当前节点自己通过了命中测试,则将当前节点添加到HitTestResult列表中
    • 如果通过命中测试,子组件会比父组件会先被加入HitTestResult列表中
  • 事件分发
    • 遍历HitTestResult列表,调用每个节点的handleEvent 方法

四、手势原理与手势冲突

  • 原理待详述
  • 解决手势冲突
    • 使用 Listener。 竞争只是针对手势的,而 Listener 是监听原始指针事件,原始指针事件并非语义话的手势,所以根本不会走手势竞争的逻辑,相当于跳出了手势识别那套规则。
    • 自定义手势识别器( Recognizer)

五、事件总线

  • 订阅者模式
  • 单例模式
    • Dart中实现单例模式的标准做法就是使用static变量+工厂构造函数的方式
    //订阅者回调签名
    typedef void EventCallback(arg);class EventBus {//私有构造函数EventBus._internal();//保存单例static EventBus _singleton = EventBus._internal();//工厂构造函数factory EventBus

相关文章:

flutter事件与消息通知

事件与消息通知 一、原始指针事件(触摸事件) 命中测试 事件阶段:手指按下、手指移动、手指抬起事件冒泡,无法停止冒泡Listener 组件:监听原始触摸事件 onPointerDown:手指按下回调onPointerMove:手指移动回调onPointerUp:手指抬起回调onPointerCancel:触摸事件取消回…...

Oracle PL/SQL存储过程和函数简单示例

以下是关于Oracle PL/SQL存储过程和函数的一些问题和答案: 问题1:什么是Oracle PL/SQL? 答案:Oracle PL/SQL(Procedural Language Extensions to SQL)是Oracle对SQL的过程语言扩展,它是一种编…...

同态加密和SEAL库的介绍(十)CKKS 参数心得 2

写在前面: 本篇继续上篇的测试,首先针对密文深度乘法情况,虽然密文乘法本就是应该尽量避免的(时间和内存成本过高),更不用说深度乘法了,但是为了测试的完整性,还是做一下方便大家比对…...

Debug-021-el-table实现分页多选的效果(切换分页,仍可以保持前一页的选中效果)

前情提要: 这个功能实现很久了,但是一直没有留意如何实现,今天想分享一下。具体就是我们展示table数据的时候,表格中的数据多数情况是分页展示,毕竟数据量太多,分页的确是有必要的。那么我们有业务需要给表…...

FPGA开发——DS18B20读取温度并且在数码管上显示

一、简介 在上一篇文章中我们对于DS18B20的相关理论进行了详细的解释,同时也对怎样使用DS18B20进行了一个简单的叙述。在这篇文章我们通过工程来实现DS18B20的温度读取并且实现在数码管伤显示。 1、基本实现思路 根据不同时刻的操作,我们可以使用一个状…...

电流测量分流电阻

电流测量分流电阻 测量电流的设备称为安培计。大多数现代安培计测量已知电阻的精密电阻上的电压降。电流的计算使用欧姆定律:我五R 大多数电流表都内置电阻器来测量电流。但是,当电流对于电流表来说太高时,需要不同的设置。解决方案是将电流…...

MES系统:智能化排班排产的全面解决方案

MES(制造执行系统)管理系统通过集成多种先进技术、实时数据采集与分析、优化算法应用以及与其他系统的协同工作,实现了智能化排班排产功能。以下是该功能的详细实现方式: 数据集成与实时采集:MES系统与ERP、SCM、设备管…...

50道深度NLP和人工智能领域面试题+答案

编者按:分享一个很硬核的免费人工智能学习网站,通俗易懂,风趣幽默, 可以当故事来看,轻松学习。 什么是自然语言处理(NLP)?自然语言处理是一种人工智能领域,致力于使计算机…...

最小矩阵宽度(85%用例)C卷(JavaPythonC++Node.jsC语言)

给定一个矩阵,包含N*M个整数,和一个包含K个整数的数组。 现在要求在这个矩阵中找一个宽度最小的子矩阵,要求子矩阵包含数组中所有的整数。 输入描述: 第一行输入两个正整数N,M,表示矩阵大小。 接下来N行M列表示矩阵内容。 下一行包含一个正整数K。 下一行包含K个整数,…...

STM32数据按字符截取与转换

目录 1. 截取2. 转换 1. 截取 以SW,33,55,78,\r\n为例 char* pa,pb,pc,pd,pe; uint8_t usart5_rxsavebuf[] "SW,12,32,33,55,78,\r\n";strtok((char *)usart5_rxsavebuf, ","); pa strtok(NULL, ","); pb strtok(NULL, ","); pc …...

使用kubeadm快速部署一套K8S集群

一、Kubernetes概述 1.1 Kubernetes是什么 Kubernetes是Google在2014年开源的一个容器集群管理系统,Kubernetes简称K8S。 K8S用于容器化应用程序的部署,扩展和管理。 K8S提供了容器编排,资源调度,弹性伸缩,部署管理…...

【Kotlin】在Kotlin项目中使用AspectJ

前言 AOP编程在Java开发中是一个非常火热的话题,最著名的库为AspectJ Kotlin项目中,通过Gradle插件,也能够使用该库,这是我们下面讲解的重点 由于AspectJ的原理是在预编译阶段,通过插件修改代码,生成代理…...

web实现drag拖拽布局

这种拖拽布局功能其实在电脑操作系统或者桌面应用里面是经常使用的基础功能,只是有时候在进行web开发的时候,对这个功能需求量不够明显,但却是很好用,也很实用。能够让用户自己拖拽布局,方便查看某个区域更多内容&…...

Linux网络编程—listen、accept、connect

一、网络四件套 #include <sys/types.h> //头文件&#xff1b;这四个文件一包&#xff0c;基本网络就无问题了&#xff1b; #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> 二、listen 监听&#xff1a;将套…...

logback.xml自定义标签节点

logback.xml自定义标签节点 问题 <?xml version"1.0" encoding"UTF-8" ?> <configuration scan"true" scanPeriod"60 seconds" debug"false"><appender name"console" class"ch.qos.logb…...

探索DevExpress WinForms:.NET世界中的UI库之星

开篇概述 作为一名资深的技术专家&#xff0c;我对.NET开发和UI库有着深入的了解。今天&#xff0c;我要向您介绍的是DevExpress WinForms —— 一款在.NET开发领域广受欢迎的开源UI库。它以其强大的功能、优雅的设计和卓越的性能&#xff0c;成为了众多开发者的首选。 主体讲解…...

零基础学习Redis(4) -- 常用数据结构介绍

我们之前提到过&#xff0c;redis中key只能是字符串类型&#xff0c;而value有多种类型。 redis中的数据结构有自己独特的实现方式能根据特定的场景进行优化 1. string(字符串) 内部编码&#xff1a; raw&#xff1a;最基本的字符串&#xff0c;类比我们平常使用的Stringin…...

Python实现水果忍者(开源)

一、整体介绍&#xff1a; 1.1 前言&#xff1a; 游戏代码基于Python制作经典游戏案例-水果忍者做出一些改动&#xff0c;优化并增加了一些功能。作为自己Python阶段学习的结束作品&#xff0c;文章最后有源码链接。 1.2 Python主要知识&#xff1a; &#xff08;1&#xf…...

Windows自动化3️⃣WindowsPC拽起时长问题解决方案

问题描述: Windows应用从点击, 到加载完成, 需要一定的时间后台是否已经启动过当前程序?启动后, 前后台应用关闭问题等 我的解决思路: 首先检查进程 , 当前进程是否在运行, 如果进程在运行, 需要先关闭进程 关闭进程后, 开始我们的自动化流程, 去拽起 应用 拽起应用后, 可以先…...

一篇文章入门Java虚拟机(JVM)

JVM全称是Java Virtual Machine&#xff0c;中文译名Java虚拟机。本质上是一个运行在计算机上的程序 一&#xff0c;JVM的功能 功能描述解释和运行对字节码文件中的指令&#xff0c;实时的解释成机器码&#xff0c;让计算机执行内存管理自动为对象、方法等分配内存&#xff1…...

别再只盯着数据了!用Arduino+GP2Y1014AU传感器,手把手教你做个能“看见”空气的PM2.5监测仪

用Arduino打造智能PM2.5监测仪&#xff1a;从硬件连接到可视化交互 在空气质量日益受到关注的今天&#xff0c;拥有一个实时监测PM2.5浓度的设备不仅能提升生活品质&#xff0c;还能为健康保驾护航。不同于市面上千篇一律的商用监测仪&#xff0c;自己动手打造一个兼具实用性和…...

毕业查重不踩坑!Paperxie 免费查重,给毕业生的安心 buff

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AIPPThttps://www.paperxie.cn/checkhttps://www.paperxie.cn/check 又是一年毕业季&#xff0c;当毕业论文的最后一个句号落下&#xff0c;查重就成了横亘在无数本科生面前的 “毕业拦路虎”。多少人熬了几…...

Wan2.2-I2V-A14B文生视频模型落地实践:单卡4090D高效推理部署案例

Wan2.2-I2V-A14B文生视频模型落地实践&#xff1a;单卡4090D高效推理部署案例 1. 项目背景与价值 视频内容创作正成为数字时代的重要需求&#xff0c;但传统视频制作流程复杂、成本高昂。Wan2.2-I2V-A14B作为新一代文生视频模型&#xff0c;能够直接将文本描述转化为高质量视…...

intv_ai_mk11应用场景:新媒体运营——热点事件评论草稿、标题党生成、互动话术

intv_ai_mk11在新媒体运营中的三大实战应用 1. 新媒体运营的痛点与AI解决方案 新媒体运营人员每天面临三大核心挑战&#xff1a;快速跟进热点事件、创作吸引眼球的标题、设计有效的互动话术。传统人工创作方式不仅耗时耗力&#xff0c;而且难以保证持续高质量输出。 intv_ai…...

Nomic-Embed-Text-V2-MoE实战:基于卷积神经网络(CNN)的图文多模态检索

Nomic-Embed-Text-V2-MoE实战&#xff1a;基于卷积神经网络&#xff08;CNN&#xff09;的图文多模态检索 你有没有想过&#xff0c;让电脑像人一样&#xff0c;既能看懂图片&#xff0c;又能理解文字&#xff0c;还能把两者联系起来&#xff1f;比如&#xff0c;你拍一张商品…...

手把手教你用llama.cpp的RPC功能,把旧笔记本变成大模型推理服务器(附性能对比)

用llama.cpp的RPC功能将旧笔记本改造成大模型推理服务器的完整指南 1. 为什么需要分布式推理环境&#xff1f; 当我在2023年第一次尝试在个人笔记本上运行7B参数的大语言模型时&#xff0c;即使经过量化处理&#xff0c;生成每个token仍需要近10秒——这种体验简直令人崩溃。但…...

快速原型设计:使用快马平台ai一键生成c语言银行系统项目骨架

今天想和大家分享一个快速验证技术方案的小技巧——用InsCode(快马)平台的AI生成功能快速搭建C语言项目原型。最近在准备一个银行系统的课程设计时&#xff0c;发现这个方式特别适合用来做前期技术验证。 为什么需要快速原型 刚开始做课程设计时&#xff0c;最头疼的就是花大量…...

告别玄学调参:手把手教你用STM32F103和MPU9250实现稳定的EKF姿态解算(附源码)

从理论到实战&#xff1a;STM32F103与MPU9250的EKF姿态解算调参全指南 在嵌入式姿态解算领域&#xff0c;扩展卡尔曼滤波&#xff08;EKF&#xff09;算法因其优异的噪声抑制能力而广受青睐。然而&#xff0c;许多开发者在STM32F103等资源受限平台上实现MPU9250的EKF姿态解算时…...

AI五金冲压报价——让精准报价,快人一步。

传统报价熬3天&#xff1f;AI 8分钟给你一份带Excel明细正规PDF的报价单&#xff01;还在用Excel手动算冲压报价&#xff1f;客户催得急&#xff0c;成本核不准&#xff0c;格式不专业丢订单&#xff1f;五金厂的报价痛点&#xff0c;我们懂&#xff01;✅ 工艺PDF/3D图扔进去&…...

SoundSwitch音频配置文件深度解析:应用触发和多设备管理的完整指南

SoundSwitch音频配置文件深度解析&#xff1a;应用触发和多设备管理的完整指南 【免费下载链接】SoundSwitch C# application to switch default playing device. Download: https://soundswitch.aaflalo.me/ 项目地址: https://gitcode.com/gh_mirrors/so/SoundSwitch …...