小编Sta*_*101的帖子

Flutter:同时使用平移和缩放手势?

我正在创建一个带有颤动的绘图画布,我想同时使用缩放(用于缩放、平移和旋转)和平移(用于用手指绘图)手势,但颤动不允许这样做,因为缩放是平移的超集。有什么解决方法吗?

我尝试创建自己的自定义手势识别器来检测屏幕上的指针数量,以便如果两个指针在很短的时间间隔内(假设为 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)

android gesturedetector dart flutter

5
推荐指数
1
解决办法
1758
查看次数

标签 统计

android ×1

dart ×1

flutter ×1

gesturedetector ×1