我目前正在构建具有多个手柄的Slider小部件,并且目前正在实现手势检测器。我遇到一个问题,如果您用第二根手指触摸/拖动屏幕,检测器将识别它并调用onDragUpdate函数,这是我要禁用的功能-在一根手指拖动手柄的同时,手势检测器不应调用第二根手指的更新,但仍应允许第一根手指调用更新。

例如,如果您用手指1(精细)滑动手柄,然后添加第二个手指(手指2),则即使两个手指都在屏幕上,手势检测器也只能识别手指1。

我知道Listener类中有一个函数,可以让您指定设备(使用details.device),但是有没有一种方法可以使用Gesture Detector类来实现呢?

目前正在为Gesture Detector寻找不同的实现者,包括查看这个答案https://stackoverflow.com/a/56037327/12147590,但我仍在努力。如果有人可以向我指出正确的方向或以简单的方式为我进一步解释答案,那将非常好,欢呼:)

最佳答案

根据reference类:



因此,如果您这样编写:

GestureDetector(
  onDragUpdate: (updateDetails) {
    // Single finger drag, update your handlers
  },
  onPanDown: (_){},
  onPanStart: (_){},
  onPanUpdate: (_){},
  onPanEnd: (_){},
  onPanCancel: (){},
  child: Container(
    color: Colors.yellow,
    child: Text('TURN LIGHTS ON'),
  ),
)

它不会对多点触摸使用react,因此您无需禁用任何功能

UPD:根据问题编辑,您应该为所有多点触摸事件设置空但非空的回调,因此,两指拖动将由空回调处理,而单指则不会

关于flutter - Flutter:使用手势检测器禁用多点触控/拖动,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58182007/

10-09 03:39