在我的应用程序树中,我有两个小部件:
GestureDetector(
onTap: () => print('Outer'),
child: IconButton(
icon: Icon(Icons.add),
onPressed: () => print('Inner')),
),
)
他们两个都试图对触摸事件做出反应,但仅调用子级的回调(这是默认行为)。是否可以以防止祖先向其子代传播触摸事件的方式定义小部件?或者,也许唯一的方法就是自己实现这种行为,例如通过使用GestureArena
?
答案 0 :(得分:2)
我认为您正在寻找AbsorbPointer小部件:
在点击测试期间吸收指针的小部件。
当吸收为true时,此小部件将阻止其子树 通过本身终止命中测试来接收指针事件。它 仍然在布局过程中占用空间并像往常一样绘制其子级。它 只是阻止其子级成为定位事件的目标, 因为它从RenderBox.hitTest返回true。
您可以像这样使用它:
GestureDetector(
onTap: () => print('Outer'),
child: AbsorbPointer(
child: IconButton(
icon: Icon(Icons.add),
onPressed: () => print('Inner'),
),
),
),