Flutter事件分发流程简析
概述
不管是原生Android、iOS还是JavaScript,只要是涉及手势交互都会有事件的分发处理。和原生Android、iOS的事件分发的步骤和原理一样,Flutter的事件分发总体也由手势触发、拦截和响应等几个部分构成。Flutter所有事件源头是 hooks.dart文件的_dispatchPointerDataPacket函数,通过拦截屏幕的点击、滑动等各种事件,进而分发给原生代码进行响应(ps:Android事件分发)。
如果你看过了解原生Android、iOS的事件分发机制,那么Flutter的事件分发,其实是在Android和iOS上加了壳,即Flutter的事件分发是在原生Android、iOS的的事件分发上进行包装的(Android - C - Dart,iOS- C -Dart)。其中,C是Flutter的底层engine,负责Flutter上层和原生Android、iOS系统的交互。
事件分发到Dart的入口类是GestureBinding类,此类位于gestures/binding.dart文件中,与手势识别相关的都位于gestures包中,如下图所示。
- converter.dart将物理坐标_dispatchPointerDataPacket收到的物理数据PointerDataPacket转换成PointerEvent, 类似于安卓在ViewRootImpl.java将InputEventReceiver收到的InputEvent转换为Motio
Flutter事件分发流程简析相关推荐
- uboot源码分析(1)uboot 命令解析流程简析
uboot 命令解析流程简析 uboot正常启动后,会调用main_loop(void)函数,进入main_loop()之后,如果在规定的时间(CONFIG_BOOTDELAY)内,没有检查到任何按键 ...
- Flutter事件分发
大道同源, 其实Flutter的事件分发跟安卓类似. 下面就详细介绍下Flutter的事件分发体系: 1. Flutter所有事件源头是 hooks.dart文件的_dispatchPointerDa ...
- CAS流程简析 服务端校验Ticket
相关阅读 CAS基础组件 简介 CAS流程简析 服务端处理未携带Service登录请求 CAS流程简析 服务端处理携带Service登录请求 CAS基础组件 客户端过滤器 简介 用户访问客户端的请求若 ...
- 带你从源码角度分析ViewGroup中事件分发流程
序言 这篇博文不是对事件分发机制全面的介绍,只是从源码的角度分析ACTION_DOWN.ACTION_MOVE.ACTION_UP事件在ViewGroup中的分发逻辑,了解各个事件在ViewGroup ...
- Linux的启动流程简析(以Debian为例)
Linux的启动流程简析(以Debian为例) 正文: 前面的文章探讨BIOS和主引导记录的作用.那篇文章不涉及操作系统,只与主板的板载程序有关.今天,我想接着往下写,探讨操作系统接管硬件以后发生的事 ...
- 【Android 事件分发】MotionEvent.ACTION_DOWN 按下事件分发流程( Activity | ViewGroup | View )
Android 事件分发 系列文章目录 [Android 事件分发]事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) [Andr ...
- Android开机启动流程简析
Android开机启动流程简析 (一) 文章目录 Android开机启动流程简析 (一) 前言 一.开机启动的流程概述 二.Android的启动过程分析 (1).总体流程 init简述 Zygote简 ...
- Flutter 事件分发
一 事件分发 以 Android 为例,所有的事件都是起原生源于 io.flutter.view.FlutterView 这个 SurfaceView 的子类,整个触摸手势事件实质上经历了 JAVA ...
- Python源码学习:启动流程简析
Python源码分析 本文环境python2.5系列 参考书籍<<Python源码剖析>> Python简介: python主要是动态语言,虽然Python语言也有编译,生成中 ...
最新文章
- 2022-2028年中国网络直播行业深度调研及投资前景预测报告
- 用户吐槽:Azure DevOps CI 体验太差
- Linux下绝对经典的命令
- Web Worker 使用教程
- 终极对决!Dubbo 和 Spring Cloud 微服务架构到底孰优孰劣?
- 基于异或,取反和循环移位实现一个简单的加密解密函数
- [OS复习]操作系统综述2
- 音频剪切_音频编辑入门指南:剪切,修剪和排列
- 全新SpringBoot整合Elasticsearch6.xxx搜索引擎实战
- 计算机硬件检测维修资料,计算机硬件检测维修实训台 Computer hardware detection and maintenance training bench...
- python 与栈 入门
- CrossOver for Mac 怎么用?
- Activity传递数据
- Qt VS中设置.ui文件的生成的.h的目录
- pandas 的数据结构Series与DataFrame
- xp3系统配置cocos2dx
- 今晚7:30|AI TIME青年学者——英国伯明翰大学计算机学院讲师来啦!
- 致敬!那些在计算机科学领域闪耀的女性
- C++实现走迷宫算法(1)
- gui开头的歌词_以“去”开头的一句歌词
热门文章
- 【论文阅读】Automatic Updating of Land Cover Maps in Rapidly Urbanizing Region
- python常见错误 TypeError: 'NoneType' object is not iterable
- win10系统下安装tensorflow总结
- 如何在Linux中安装jdk?
- 听“Siri之父”讲述Siri背后的故事
- 视频文件头解析--wma
- c++ stack用法 入门必看 超详细
- 用深度学习做个艺术画家 ——模仿实现PRISMA
- 2万字深度解读麦克斯韦方程组,最美的方程,你也能懂她的美
- 云服务器租赁维护合同,云服务器 租赁 服务合同