Flutter - onTapUp не вызывается после onLongPress - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь создать контекстное меню, которое будет отображаться после длительного нажатия, удерживая палец на объекте, после чего вы выберете опцию (перетаскивая палец) и поднимите ее, чтобы инициировать действие.

Используя Флаттер, я заметил кое-что, что для меня немного странно.Итак, во-первых, код:

    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 голосов
/ 29 июня 2018

Я не знаю, пройдет ли PR, но я решил его новым жестом onLongPressUp.

Вот оно https://github.com/flutter/flutter/pull/18949

0 голосов
/ 19 мая 2018

Вы можете добавить другой детектор жестов, который будет обрабатывать касание.

Я не уверен, является ли текущее поведение ошибкой, поэтому вы можете отправить его в систему отслеживания ошибок.

...