Flutter AbsorbPointer与IgnorePointer的区别

问题描述 投票:1回答:1

AbsorbPointerIgnorePointer在扑扑中有什么区别?

文件提到:

AbsorbPointer通过终止命中测试来阻止其子树接收指针事件。

IgnorePointer,它也可以防止它的子节点接收指针事件,但它本身对于命中测试是不可见的。

我没有得到两者之间的真实生活差异。

dart flutter
1个回答
6
投票

不同之处在于我们有两个小部件互相重叠,这两个小部件都可以获得点击。

考虑一个红色和蓝色的正方形,两个都是可点击的,蓝色正方形较小,位于红色正方形的顶部:

Stack(
  alignment: Alignment.center,
  children: [
     Container(color: Colors.red),
     Container(width: 42, height: 42, color: Colors.blue),
  ],
)

默认情况下,没有IgnorePointer / AbsorbPointer,录制蓝色会发送蓝色和红色的点击事件。

在这种情况下,将蓝色方块包装成AbsorbPointer意味着当点击蓝色区域时,蓝色方块和红色方块都不会获得点击事件。

如果我们改为使用IgnorePointer,则在拍摄蓝色方块时,红色方块会收到点击事件。

© www.soinside.com 2019 - 2024. All rights reserved.