flutter - 处理父部件中的点击事件

标签 flutter

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

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

他们都试图对触摸事件使用react,但只有 child 的回调被调用(这是默认行为)。是否有可能以防止祖先将触摸事件传播给其子项的方式定义小部件?或者也许唯一的方法是自己实现这种行为,例如通过使用 GestureArena?

最佳答案

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

A widget that absorbs pointers during hit testing.

When absorbing is true, this widget prevents its subtree from receiving pointer events by terminating hit testing at itself. It still consumes space during layout and paints its child as usual. It just prevents its children from being the target of located events, because it returns true from RenderBox.hitTest.

你可以这样使用它:

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

关于flutter - 处理父部件中的点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52164463/

相关文章:

flutter - 在 xcode 中为 flutter.io 应用程序构建存档时出错

android - 配置根项目 'android' 时出现问题在构建 VSCode 和 Android Studio (Flutter) 的 gradle 时

flutter - 使用Android后退按钮重新启动应用程序后,热重装失败吗?

flutter - 如何处理已在库中声明的 dart 异常?

dart - 在 Canvas 中绘制多条线

android - Flutter 改变闪屏背景颜色

material-design - Flutter中如何调整BottomSheet的高度和边框半径?

flutter - 如何将值添加到从 flutter 到 firestore 的数组

flutter - 根据不同屏幕尺寸的坐标放置标记(Flutter)

flutter - 将 Firestore 中的键值对数组加载到 flutter 中的 List 中