GestureDetector:如何区分单点触控和多点触控手势?

时间:2018-11-25 16:15:21

标签: flutter

我的目标是构建一个小部件,该部件允许使用单指点击进行绘制,并在两指模式下缩放/移动画布。

目前,我已经构建了ZoomViewDrawingOverlay小部件。 ZoomView允许缩放和移动作为参数传递的子级。并且DrawingOverlay允许在作为参数传递的child小部件上绘制。现在,它们可以很好地分开工作。

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

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

但是,当它们一起使用时,事情会破裂:

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

优先感很大程度上是偶然的。有时会在按下两根手指时开始绘制,有时会用一根手指在移动屏幕,而有时又用另一只手指在屏幕上移动。

我想将ZoomView限制为2个手指手势,并且将DrawingOverlay限制为1个手指手势。

实现此目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

应该将两个侦听器设置在同一GestureDetector上。