在我的应用程序树中,我有两个小部件:
GestureDetector(
onTap: () => print('Outer'),
child: IconButton(
icon: Icon(Icons.add),
onPressed: () => print('Inner')),
),
)
他们都试图对触摸事件做出反应,但只有孩子的回调被调用(这是默认行为)。是否可以以阻止祖先将触摸事件传播给其子级的方式定义小部件?或者也许唯一的方法是自己实现这种行为,例如通过利用GestureArena
?
我想你正在寻找吸收指针 https://docs.flutter.io/flutter/widgets/AbsorbPointer-class.html widget:
在命中测试期间吸收指针的小部件。
当吸收为真时,该小部件会阻止其子树
通过终止自身的命中测试来接收指针事件。它
在布局期间仍然消耗空间并像往常一样绘制其子级。它
只是防止其子级成为已定位事件的目标,
因为它从 RenderBox.hitTest 返回 true。
你可以这样使用它:
GestureDetector(
onTap: () => print('Outer'),
child: AbsorbPointer(
child: IconButton(
icon: Icon(Icons.add),
onPressed: () => print('Inner'),
),
),
),
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)