概述

不管是原生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事件分发流程简析相关推荐

  1. uboot源码分析(1)uboot 命令解析流程简析

    uboot 命令解析流程简析 uboot正常启动后,会调用main_loop(void)函数,进入main_loop()之后,如果在规定的时间(CONFIG_BOOTDELAY)内,没有检查到任何按键 ...

  2. Flutter事件分发

    大道同源, 其实Flutter的事件分发跟安卓类似. 下面就详细介绍下Flutter的事件分发体系: 1. Flutter所有事件源头是 hooks.dart文件的_dispatchPointerDa ...

  3. CAS流程简析 服务端校验Ticket

    相关阅读 CAS基础组件 简介 CAS流程简析 服务端处理未携带Service登录请求 CAS流程简析 服务端处理携带Service登录请求 CAS基础组件 客户端过滤器 简介 用户访问客户端的请求若 ...

  4. 带你从源码角度分析ViewGroup中事件分发流程

    序言 这篇博文不是对事件分发机制全面的介绍,只是从源码的角度分析ACTION_DOWN.ACTION_MOVE.ACTION_UP事件在ViewGroup中的分发逻辑,了解各个事件在ViewGroup ...

  5. Linux的启动流程简析(以Debian为例)

    Linux的启动流程简析(以Debian为例) 正文: 前面的文章探讨BIOS和主引导记录的作用.那篇文章不涉及操作系统,只与主板的板载程序有关.今天,我想接着往下写,探讨操作系统接管硬件以后发生的事 ...

  6. 【Android 事件分发】MotionEvent.ACTION_DOWN 按下事件分发流程( Activity | ViewGroup | View )

    Android 事件分发 系列文章目录 [Android 事件分发]事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) [Andr ...

  7. Android开机启动流程简析

    Android开机启动流程简析 (一) 文章目录 Android开机启动流程简析 (一) 前言 一.开机启动的流程概述 二.Android的启动过程分析 (1).总体流程 init简述 Zygote简 ...

  8. Flutter 事件分发

    一 事件分发 以 Android 为例,所有的事件都是起原生源于 io.flutter.view.FlutterView 这个 SurfaceView 的子类,整个触摸手势事件实质上经历了 JAVA ...

  9. Python源码学习:启动流程简析

    Python源码分析 本文环境python2.5系列 参考书籍<<Python源码剖析>> Python简介: python主要是动态语言,虽然Python语言也有编译,生成中 ...

最新文章

  1. 2022-2028年中国网络直播行业深度调研及投资前景预测报告
  2. 用户吐槽:Azure DevOps CI 体验太差
  3. Linux下绝对经典的命令
  4. Web Worker 使用教程
  5. 终极对决!Dubbo 和 Spring Cloud 微服务架构到底孰优孰劣?
  6. 基于异或,取反和循环移位实现一个简单的加密解密函数
  7. [OS复习]操作系统综述2
  8. 音频剪切_音频编辑入门指南:剪切,修剪和排列
  9. 全新SpringBoot整合Elasticsearch6.xxx搜索引擎实战
  10. 计算机硬件检测维修资料,计算机硬件检测维修实训台 Computer hardware detection and maintenance training bench...
  11. python 与栈 入门
  12. CrossOver for Mac 怎么用?
  13. Activity传递数据
  14. Qt VS中设置.ui文件的生成的.h的目录
  15. pandas 的数据结构Series与DataFrame
  16. xp3系统配置cocos2dx
  17. 今晚7:30|AI TIME青年学者——英国伯明翰大学计算机学院讲师来啦!
  18. 致敬!那些在计算机科学领域闪耀的女性
  19. C++实现走迷宫算法(1)
  20. gui开头的歌词_以“去”开头的一句歌词

热门文章

  1. 【论文阅读】Automatic Updating of Land Cover Maps in Rapidly Urbanizing Region
  2. python常见错误 TypeError: 'NoneType' object is not iterable
  3. win10系统下安装tensorflow总结
  4. 如何在Linux中安装jdk?
  5. 听“Siri之父”讲述Siri背后的故事
  6. 视频文件头解析--wma
  7. c++ stack用法 入门必看 超详细
  8. 用深度学习做个艺术画家 ——模仿实现PRISMA
  9. 2万字深度解读麦克斯韦方程组,最美的方程,你也能懂她的美
  10. 云服务器租赁维护合同,云服务器 租赁 服务合同