在 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,
);
}
我正在开发应用程序,在双击时我需要执行一些操作,但它们需要执行双击的位置。该信息通常由事件的详细信息携带,例如“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,
);
}