AbsorbPointer
和IgnorePointer
的Flutter 有什么不同?
文件提到:
AbsorbPointer通过终止自身的命中测试来防止其子树接收指针事件.
IgnorePointer,它也阻止其子级接收指针事件,但它本身对命中测试不可见.
我不明白这两者在现实生活中有什么不同.
AbsorbPointer
和IgnorePointer
的Flutter 有什么不同?
文件提到:
AbsorbPointer通过终止自身的命中测试来防止其子树接收指针事件.
IgnorePointer,它也阻止其子级接收指针事件,但它本身对命中测试不可见.
我不明白这两者在现实生活中有什么不同.
不同的是,当我们有两个相互重叠的小部件时,这两个小部件都可以接收点击.
考虑一个红色和蓝色的正方形,两个可点击,蓝色广场较小,在红场的顶部:
Stack(
alignment: Alignment.center,
children: [
Container(color: Colors.red),
Container(width: 42, height: 42, color: Colors.blue),
],
)
默认情况下,如果没有IgnorePointer
/AbsorbPointer
,点击蓝色方块将在蓝色上发送单击事件,而红色则什么也得不到.
在这种情况下,将蓝色方块包装成AbsorbPointer
意味着当点击蓝色方块时,蓝色方块和红色方块都不会收到单击事件.
如果我们改用IgnorePointer
,当点击蓝色方块时,红色方块将收到点击事件.