Flutter 指针事件原理&点击穿透_flutter pointer(1)

本文深入探讨Flutter中的指针事件处理,从GestureBinding和RendererBinding的角度解析hitTest机制。通过递归调用内容解析,揭示点击穿透现象的原因,涉及RenderBox、HitTestResult等关键概念。文章适合有一定Flutter基础的开发者,有助于理解事件处理和布局交互的本质。
摘要由CSDN通过智能技术生成

image.png

2.在GestureBinding和中处理得到的指针数据

经过了几层看不懂的调用,指针数据走到了这个地方,并且以队列的形式被处理。(这里又有window,又有lock,暂时不管)。

image.png

注意到,这里的packet是ui.PointerDataPacket类型,该类内部仅有一个final List<PointerData>的data成员。

image.png

既然是队列,那么就是循环出列,逐个处理事件。这个过程由_flushPointerEventQueue完成。

image.png

handlePointerEvent方法,如其名,这里传过来的数据已经成为了PointerEvent类型。(resanlingEnabled默认为false,官方文档的解释是通过这只这个选项,对于设备的指针采样率屏幕刷新率有某种关系的,可以让指针更丝滑)

image.png

3.在GestureBinding和RendererBinding中进行hitTest

_handlePointerEventImmediately方法被handlePointerEvent(上面那个家伙)调用。 这个方法是个重量级的家伙。

void _handlePointerEventImmediately(PointerEvent event) {
  HitTestResult? hitTestResult;
  if (event is PointerDownEvent || event is PointerSignalEvent || 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值