在我的应用程序树中,我有两个小部件:
GestureDetector(
onTap: () => print('Outer'),
child: IconButton(
icon: Icon(Icons.add),
onPressed: () => print('Inner')),
),
)
Run Code Online (Sandbox Code Playgroud)
他们都试图对触摸事件做出反应,但只有孩子的回调被调用(这是默认行为)。是否可以以阻止祖先将触摸事件传播给其子级的方式定义小部件?或者也许唯一的方法是自己实现这种行为,例如通过使用GestureArena?
Rom*_*tel 13
我认为您正在寻找AbsorbPointer小部件:
在命中测试期间吸收指针的小部件。
当 absorbing 为 true 时,该小部件通过终止自身的命中测试来防止其子树接收指针事件。它在布局期间仍然消耗空间并像往常一样绘制其子级。它只是防止其子级成为定位事件的目标,因为它从 RenderBox.hitTest 返回 true。
你可以这样使用它:
GestureDetector(
onTap: () => print('Outer'),
child: AbsorbPointer(
child: IconButton(
icon: Icon(Icons.add),
onPressed: () => print('Inner'),
),
),
),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2812 次 |
| 最近记录: |