Создание клавиатуры в стиле смахивания с помощью Flutter - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь создать настраиваемую клавиатуру, которая позволяет мне начинать перетаскивать и получать события, когда палец перемещается по клавиатуре, сообщая мне, какая буква в настоящее время «зависла». Я попытался построить это, используя строки и столбцы GestureDetectors с дочерним элементом Text, но когда я перемещаю палец по клавиатуре, вызывается только самый первый GestureDetector ... похоже, что исходный GestureDetector удерживает операцию перетаскивания (как я провожу пальцем по клавиатуре) и никакой другой GestureDetector не активируется ... если я подниму палец и коснусь другой буквы, жест распознается. Я подумал о том, чтобы иметь родительский контейнер, который математически определяет на основе сетки, какая буква «зависла», но это кажется менее идеальным, чем хотелось бы.

Есть идеи?

GestureDetector(
      onTapDown: (details) {
        setState(() {
          _selectedLetter = letter;
          _showLetterPopup = true;
        });
      },
      onTapUp: (details) {
        setState(() {
          _showLetterPopup = false;
        });
      },
      onHorizontalDragStart: (details) {
        setState(() {
          _selectedLetter = letter;
          _showLetterPopup = true;
        });
      },
      onVerticalDragStart: (details) {
        print(letter);
        setState(() {
          _selectedLetter = letter;
          _showLetterPopup = true;
        });
      },
      onHorizontalDragEnd: (details) {
        print("End $letter");
        setState(() {
          _selectedLetter = letter;
          _showLetterPopup = false;
        });
      },
      onVerticalDragEnd: (details) {
        print("End $letter");
        setState(() {
          _selectedLetter = letter;
          _showLetterPopup = false;
        });
      },
child: ...
)
...