- 点击事件处理流程
- 分解内容讲解
- App启动->启动FlutterActivity->使用FLutterView(SurfaceView)填充界面
- 初始化Flutter底层容器(初始化window对象)->runApp将用户Widget和系统进行绑定
- GestureBinding将window的回调绑定到WidgetsFlutterBinding/GestureBinding上处理点击事件
- RendererBinding -> renderView
- 事件传递过来以后,先进行从上到下的点击检测,将点击区域覆盖的界面全部加载到HitTestResult中
- RenderObject实现了HitTestTarget可以在封装成BoxHitTestEntry后,添加到Result中
- 只有按下的动作才会进行HitTest,在后面的操作中,点击事件的传递区域都不会改变.
- 在抬起动作,HitTest结果会移除
- 更新了HitTest后,全部的事件都会分发到Target中,让Target处理按下/移动/松开等一系列操作
- 父子同时有点击事件,不会同时执行.优先执行子事件