Flutter:使用手势检测器禁用多点触摸/拖动

2023-12-02

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

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

我知道 Listener 类中有一个函数允许您指定设备(使用details.device),但是有没有办法使用手势检测器类来实现此目的?

目前正在研究手势检测器的不同实现者,包括查看这个答案https://stackoverflow.com/a/56037327/12147590但我仍在挣扎。如果有人能为我指出正确的方向或用简单的术语进一步解释答案,那就太好了,干杯:)


根据班级参考:

尝试识别与其非空对应的手势 回调。

所以如果你这样写:

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

它不会对多点触控做出反应,因此您不必禁用任何内容

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flutter:使用手势检测器禁用多点触摸/拖动 的相关文章

随机推荐