微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 GestureDetector 的单个实例检测多个手势?

如何解决如何使用 GestureDetector 的单个实例检测多个手势?

我想制作 WhatsApp 语音录音功能用户点击并按住录制音频,但可以向左滑动取消。但是当我使用 GestureDetector 时它只注册一种手势类型。

例如,如果用户以长按开始,则仅注册 onLongPress 手势。或者,如果用户以水平拖动开始,则仅 onHorizo​​ntalDrag:

          onLongPressstart: _onPressstart,onLongPressUp: _onPressEnd,onHorizontalDragDown: _onHorizontalDragDown,onHorizontalDragUpdate: _onHorizontalDragUpdate,onHorizontalDragEnd: _onHorizontalDragEnd,

如何一个一个地使用2个手势?

谢谢!

解决方法

尝试使用 onLongPressMoveUpdate 提供的 GestureDetector 回调

这提供了 LongPressMoveUpdateDetails,它有一个名为 offsetFromOrigin 的属性。

offsetFromOrigin 为您提供一个 Offset 对象,其 dx 值正是您所需要的。

GestureDetector(
  child: ...
  onLongPressMoveUpdate: (updateDetails) { 
      if (updateDetails.offsetFromOrigin.dx < 0) {
          // Handle horizontal drag towards left
      }
  }
)

或者,如果您无法使用上述方法,请查看此Medium article

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。