小编Mat*_*ino的帖子

使用 GestureDetector 捕捉 MaterialButton 子节点的手势

我想要一个 MaterialButton 来检测 onTapDown、onTapUp 和 onTapCancel。

不幸的是,MaterialButtons 只检测 onPressed。所以我用 GestureDetector 包裹它,但对于 MaterialButtons,onPressed 是 @required 所以我将它设置为 () {}。问题是,即使我将 GestureDetector 行为设置为半透明,如果我点击按钮,只会触发 Button 的 onPressed 回调,并且我会丢失 GestureDetector 的 onTapDown 和 onTapUp 回调。如果我长按按钮,我只会触发 onTapDown,当我释放它时,会触发 onTapCancel。我永远无法以这种方式触发 onTapUp。

我仍然希望 MaterialButton 具有触觉/声音/视觉反馈功能。

我试图根本不设置 MaterialButton 上的 onPressed,并且(奇怪的是)它仍然有效,但该按钮被禁用并且根本没有提供任何反馈。

GestureDetector(
          behavior: HitTestBehavior.translucent,
          onTapDown: (_) {
            th.handleTap(i, 0);
          },
          onTapUp: (_) {
            th.handleTap(i, 1);
          },
          onTapCancel: () {
            th.handleTap(i, 2);
          },
          child: MaterialButton(
            onPressed: () {},
            child: Container(
              margin: EdgeInsets.all(5),
              child: Icon(icon),
            ),
          )
        )
Run Code Online (Sandbox Code Playgroud)

编辑:谢谢 Hugo Passos,出于某种原因,我认为 MaterialButtons 永远不会向他们的孩子传递手势。我越来越近了,但我仍然不在那里:我发现匹配 Gesture …

gesturedetector flutter

5
推荐指数
1
解决办法
2303
查看次数

标签 统计

flutter ×1

gesturedetector ×1