flutter中的AbsorbPointer
和IgnorePointer
有什么区别?
文件提及:
我没有得到两者之间的真实生活差异。
最佳答案
区别在于,当我们有两个彼此重叠的小部件时,它们都可以接收点击。
考虑一个红色和蓝色的正方形,两者均可单击,其中蓝色正方形较小,位于红色正方形的顶部:
Stack(
alignment: Alignment.center,
children: [
Container(color: Colors.red),
Container(width: 42, height: 42, color: Colors.blue),
],
)
默认情况下,如果没有IgnorePointer
/AbsorbPointer
,则点击蓝色方块将发送蓝色的点击事件,而红色则没有任何作用。在这种情况下,将蓝色方块包装到
AbsorbPointer
中意味着在点击蓝色方块时,蓝色方块和红色方块都不会获得click事件。如果我们改用
IgnorePointer
,则红色方块在点击蓝色方块时会收到点击事件。