手势检测器:如何区分单点触摸和多点触摸手势



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

当时我已经构建了一个ZoomView和DrawingOverlay小部件。ZoomView允许缩放和移动作为参数传递的子对象。DrawingOverlay允许在作为参数传递的child小部件的顶部绘制。现在他们分开工作很好。

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

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

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

优先权在很大程度上是偶然的。有时它是在按下两个手指时开始绘制的,有时它用一个手指移动屏幕,有时用另一个手指旋转。

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

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

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

最新更新