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

Ski*_*Ski 5 flutter

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

目前我已经构建了ZoomViewDrawingOverlay小部件。ZoomView允许缩放和移动作为参数传递的子项。并DrawingOverlay允许在作为参数传递的小部件之上进行绘制child。现在他们分开工作得很好。

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

class DrawingOverlay {
   build() {
      return GestureDetector(
         onPanUpdate: () { ... }
         ...
      )
   }
}
Run Code Online (Sandbox Code Playgroud)

然而,当它们一起使用时,事情就会破裂:

build() {
    ZoomView(
      child: DrawingOverlay(
        child: ... 
      )
    )
}
Run Code Online (Sandbox Code Playgroud)

优先权感觉很大程度上是偶然的。有时,按下两根手指时它会开始绘图,有时它会用一根手指移动屏幕,有时则相反。

我想限制ZoomView为仅 2 个手指手势和DrawingOverlay仅 1 个手指手势。

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

Dar*_*rdi -1

它应该可以将两个侦听器设置在同一个上GestureDetector