我正在创建一个带有颤动的绘图画布,我想同时使用缩放(用于缩放、平移和旋转)和平移(用于用手指绘图)手势,但颤动不允许这样做,因为缩放是平移的超集。有什么解决方法吗?
我尝试创建自己的自定义手势识别器来检测屏幕上的指针数量,以便如果两个指针在很短的时间间隔内(假设为 1 秒)与屏幕接触,则 Scale 接管,否则 pan 开始使用第一个触摸屏幕的指针。我正在使用matrix_gesture_detector包来做缩放部分。
这是我的自定义手势识别器代码
class ScaleAndPanRecognizer extends OneSequenceGestureRecognizer {
var manager = GestureArenaManager();
final Function onPanDown;
final Function onPanUpdate;
final Function onPanEnd;
ScaleAndPanRecognizer({
@required this.onPanDown,
@required this.onPanUpdate,
@required this.onPanEnd,
});
int numPointers = 0;
int timeFrame = 1;
int pointer1;
int pointer2;
var time1;
var time2;
var position1;
@override
void addPointer(PointerDownEvent event) {
print(numPointers);
if (numPointers == 0) {
pointer1 = event.pointer;
print(pointer1);
position1 = event.localPosition;
manager.hold(pointer1); //hold the assignment for this pointer …Run Code Online (Sandbox Code Playgroud)