处理父窗口小部件中的点击事件

时间:2018-09-04 10:43:39

标签: flutter

在我的应用程序树中,我有两个小部件:

GestureDetector(
   onTap: () => print('Outer'),
   child: IconButton(
     icon: Icon(Icons.add),
     onPressed: () => print('Inner')),
   ),
)

他们两个都试图对触摸事件做出反应,但仅调用子级的回调(这是默认行为)。是否可以以防止祖先向其子代传播触摸事件的方式定义小部件?或者,也许唯一的方法就是自己实现这种行为,例如通过使用GestureArena

1 个答案:

答案 0 :(得分:2)

我认为您正在寻找AbsorbPointer小部件:

  

在点击测试期间吸收指针的小部件。

     

当吸收为true时,此小部件将阻止其子树   通过本身终止命中测试来接收指针事件。它   仍然在布局过程中占用空间并像往常一样绘制其子级。它   只是阻止其子级成为定位事件的目标,   因为它从RenderBox.hitTest返回true。

您可以像这样使用它:

GestureDetector(
  onTap: () => print('Outer'),
  child: AbsorbPointer(
    child: IconButton(
      icon: Icon(Icons.add),
      onPressed: () => print('Inner'),
    ),
  ),
),