GestureDetector: как различать жесты одним касанием и мультитач? - PullRequest
0 голосов
/ 25 ноября 2018

Моя цель - создать виджет, который позволяет рисовать одним касанием пальца, и масштабировать / перемещать холст в режиме двумя пальцами.

На данный момент я создал ZoomView и DrawingOverlay виджеты.ZoomView позволяет масштабировать и перемещать дочерний элемент, переданный в качестве параметра.И DrawingOverlay позволяет рисовать поверх виджета child, переданного в качестве параметра.Прямо сейчас они работают хорошо по отдельности.

class ZoomView {
   build() {
     return GestureDetector(
         onScaleUpdate: () { ... }
         ...
     )
   }
}

class DrawingOverlay {
   build() {
      return GestureDetector(
         onPanUpdate: () { ... }
         ...
      )
   }
}

Однако, когда они используются вместе, вещи распадаются:

build() {
    ZoomView(
      child: DrawingOverlay(
        child: ... 
      )
    )
}

Приоритет ощущается в значительной степени случайно.Иногда он начинает рисовать, когда нажимается 2 пальца, а иногда перемещает экран одним пальцем, а иногда наоборот.

Я хотел бы ограничить ZoomView только двумя жестами и DrawingOverlay - 1только жесты пальцами.

Какой лучший способ добиться этого?

1 Ответ

0 голосов
/ 26 ноября 2018

Должна работать настройка обоих слушателей на один GestureDetector.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...