flutter - 在 Flutter GestureDetector 上的 DoubleTap 上获取 "details"

标签 flutter webview gesturedetector

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

现在,我知道您可以在 GestureDetector 上调用“onTapDown”和“doubleTap”,但是如果您有一个 child 采用“onTap”手势,则在双击发生时“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 ,我做到了,这很棒,但它遇到了与我相同的问题,如果您有一个在竞技场上赢得“onTap”的 child ,“onTapDown”将不会触发。

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

谢谢。

最佳答案

适用于版本 1.22.0(发布日期:2020 年 1 月 10 日),您可以通过 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,
  );
}

关于flutter - 在 Flutter GestureDetector 上的 DoubleTap 上获取 "details",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63228704/

相关文章:

flutter - 是否可以在 flutter 中更改 showGeneralDialog() 的默认动画?

dart - 持久化Flutter小部件在内存中

dart - 从列表中删除项目后更新 UI

java - 使用 JSOUP 将文档加载到 WebView

android - 如何在 webview 中处理回调

android - Flutter - RevenueCat - 存在凭据问题,请检查底层错误以获取更多详细信息,购买后会出现错误

android - 加密 Android 上的 WebView 缓存

android - 双击 ListView 项时获取选定项

android - SimpleOnGestureListener 代码在 Android 2.2 中不起作用

flutter - 如何在 flutter 中制作填字游戏类型的拼图?