Flutter - 在onLongPress之后不调用onTapUp

时间:2018-05-19 15:33:48

标签: uigesturerecognizer flutter long-press

我正在尝试创建一个上下文菜单,在长按后显示,同时将手指放在对象上,之后您将选择一个选项(通过拖动手指)并抬起它以启动操作。

使用Flutter,我注意到对我来说有点奇怪。首先,代码:

    import 'package:flutter/material.dart';

    void main() {
      runApp(new MaterialApp(
        home: new Scaffold(
          body: new GestureDetector(
            onLongPress: () {
              print("onLongPress");
            },
            onTapUp: (TapUpDetails details) {
              print("onTapUp");
            },
            child: new Center(
              child: new FlutterLogo(),
            ),
          ),
        ),
      ));
    }

所以,如果我运行它,在长按图标后,则会调用“onLongPress”的处理程序,但在抬起手指后,“onTapUp”不会被调用。如果我注释掉“onLongPress”(所有3行)的处理程序,那么在长按“onTapUp”后调用。我想处理“onTapUp”和“onLongPress”。

为什么会发生这种情况?难道我做错了什么 ?有没有不同的方法来实现这个目标?

我已经尝试过调试它,但我想也许你们可以帮助我(即使调试它很有趣:))。

提前致谢

2 个答案:

答案 0 :(得分:0)

你可以用其他手势探测器包裹来处理点击。

我不确定当前行为是否存在错误,因此您可能希望将其提交给问题跟踪器。

答案 1 :(得分:0)

我不知道PR是否会通过,但是我已经用onLongPressUp上的新手势解决了它。

这是https://github.com/flutter/flutter/pull/18949