flutter - 如何使用 GestureDetector 的单个实例检测多个手势?
问题描述
我想做WhatsApp语音录音功能。用户点击并按住录制音频,但可以向左滑动取消。但是当我使用 GestureDetector 时,它只注册一种手势类型。
例如,如果用户以长按开始,则仅注册 onLongPress 手势。或者如果用户从水平拖动开始,则仅 onHorizontalDrag:
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 文章
推荐阅读
- jenkins-pipeline - 在 Jenkins Pipeline 中将全局变量定义为 linux 命令
- reactjs - React.createRef(); 始终为空
- neo4j - Neo4j 将路径大小大于 3 的位置合并到我的查询中,该查询定义了 2 个不同的节点标签
- c - ATtiny817 Xplained 迷你 RTC 配置
- php - 我正在尝试在 php 中将一个网站的内容加载到另一个网站
- swift - 结果不正确的领域结果对象(iOS,Swift)
- android - 未签名生成的 APK 在 Android 设备上不起作用
- security - 服务器到服务器集成的 Oauth2 授权类型
- python - 为什么我所做的更改(使用 pickle 模块)没有保存?
- javascript - Node.js 中的 fs readFile 代码不知何故坏了