在 Flutter GestureDetector 上获得 DoubleTap "details"

Get "details" on DoubleTap on Flutter GestureDetector

我正在开发应用程序,在双击时我需要执行一些操作,但它们需要执行双击的位置。该信息通常由事件的详细信息携带,例如“onTapDown/Up”。

现在,我知道您可以在 GestureDetector 上同时调用“onTapDown”和“doubleTap”,但是如果您有一个采用“onTap”手势的 child,则“onTapDown”不会触发双击发生。在我的例子中,我在 GestureDetector 下有一个 WebView,所以只有“onDoubleTap”触发。

我已经在这个请求 (https://github.com/flutter/flutter/issues/20000) 中向 Flutter 团队提出了要将“详细信息”添加到“onDoubleTap”的问题,但看起来还需要一段时间。

在同一个线程中,他们提出了几个我已经尝试过的解决方案。第一次使用此代码:

var lastTapDown = 0;

onTapDown: (details) {
  var now = DateTime.now().millisecondsSinceEpoch;
  if (now - lastTapDown < 200) {
    print("Double Tap!")
  }
  lastTapDown = now;
},

...

第一个解决方案有效,但我无法使用它,因为我需要 WebView 声明“onTap”。

另一个使用这个插件:https://github.com/tomwyr/positioned-tap-detector,我做了,它很棒,但遇到了和我一样的问题,如果你有 [=33=,“onTapDown”不会触发] 在竞技场上赢得“onTap”。

因此,如果有人可以帮助我获得该职位,我们将不胜感激。 :)

谢谢。

可用版本 1.22.0(发布日期:01/10/2020)您可以通过 onDoubleTapDown.

获取详细信息
TapDownDetails _doubleTapDetails;

void _handleDoubleTapDown(TapDownDetails details) {
  _doubleTapDetails = details;
}

void _handleDoubleTap() {
  print('Double tap on position ${_doubleTapDetails.localPosition}'); 
}

@override
Widget build(BuildContext context) {
  return GestureDetector(
    /* ... */
    onDoubleTapDown: _handleDoubleTapDown,
    onDoubleTap: _handleDoubleTap,
  );
}