首页 > 解决方案 > 如果使用 onDoubleTap,InkWell 效果开始延迟;想要在小部件被触摸时触发它

问题描述

如果您将onTap& 与onDoubleTap并排使用InkWell,则单击会延迟(300 毫秒)。我知道识别双击需要时间,但效果也会延迟,这是一种糟糕的用户交互感觉。

我试过的: 我发现,只要InkWell调用任何点击事件回调,效果就会开始。如果我onTap单独使用,回调和效果在第一次触摸时立即启动;如果我使用onTapand 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 行为;如果用户触摸小部件,应该立即调用它。

标签: fluttergesture-recognition

解决方案


我现在找到了一个简单的解决方案。我只使用了onTap函数,InkWell并且我自己编写了onDoubleTap算法。onDoubleTap因此,飞溅效果立即运行,因为未使用原始效果。tap 函数本身会被延迟(因为它也会使用原始onDoubleTap函数)。

Pup.dev 包 我已经编写了一个名为 pub.dev 的包InkWellSplash。除了飞溅功能外,您现在还可以调整两次点击之间的最长时间以识别双击。

我很确定这个包会派上用场,对几个开发人员很有用

链接

Pub.dev-InklWellSplash

GitHub - InkWellSplash

交互式示例


推荐阅读