flutter - 如果使用 onDoubleTap,InkWell 效果开始延迟;想要在小部件被触摸时触发它
问题描述
如果您将onTap
& 与onDoubleTap
并排使用InkWell
,则单击会延迟(300 毫秒)。我知道识别双击需要时间,但效果也会延迟,这是一种糟糕的用户交互感觉。
我试过的:
我发现,只要InkWell
调用任何点击事件回调,效果就会开始。如果我onTap
单独使用,回调和效果在第一次触摸时立即启动;如果我使用onTap
and onDoubleTap
,效果会延迟。
我也尝试过使用onTapDown
,但这也会延迟(可能是错误?)
child: InkWell(
onTap: () { print("Tap"); }, // gets delayed 300ms
onDoubleTap: () { print("Double Tap"); },
onTapDown: (x) { print("Tap Down"); } // gets delayed 300ms
}
所以我的问题 是:是否可以更改 InkWell (GestureDetector) 以立即启动效果。我认为解决方案可能是改变 onTapDown 行为;如果用户触摸小部件,应该立即调用它。
解决方案
我现在找到了一个简单的解决方案。我只使用了onTap
函数,InkWell
并且我自己编写了onDoubleTap
算法。onDoubleTap
因此,飞溅效果立即运行,因为未使用原始效果。tap 函数本身会被延迟(因为它也会使用原始onDoubleTap
函数)。
Pup.dev 包
我已经编写了一个名为 pub.dev 的包InkWellSplash
。除了飞溅功能外,您现在还可以调整两次点击之间的最长时间以识别双击。
我很确定这个包会派上用场,对几个开发人员很有用
链接
推荐阅读
- antd - 如何用蚂蚁设计呈现字典列表?
- json - soql 父到子 soql 请求的结果
- list - 拍两个列表 lambda
- android - 如何同步 PostgreSQL 数据和 ReactNative 移动应用数据?
- php - Laravel : Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException 没有消息
- python-3.x - python颜色图量化(matplotlib)
- apache-nifi - NIFI:在循环的每次迭代期间无法从列表中提取两个值
- dart - 如何在 Flutter 小部件中使用 If 语句
- excel - 为什么这些列没有正确锁定?
- java - Dagger 2 在 Application 类中构建组件的良好实践