如果使用 onDoubleTap,InkWell 效果开始延迟;想要在触摸小部件后立即触发它

InkWell effect starts delayed if using onDoubleTap; want to trigger that as soon as the widget gets touched

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

我尝试过的: 我发现,一旦调用任何点击事件回调,InkWell 效果就会开始。如果我单独使用 onTap ,回调和效果会在第一次触摸时立即启动;如果我使用 onTaponDoubleTap,效果会延迟。

我也试过使用 onTapDown,但这也有延迟(可能是 Bug?)

child: InkWell(
  onTap: () { print("Tap"); },                // gets delayed 300ms
  onDoubleTap: () { print("Double Tap"); }, 
  onTapDown: (x) { print("Tap Down"); }       // gets delayed 300ms
}

所以我的问题是: 是否有可能更改 InkWell (GestureDetector) 以立即启动效果。我认为解决方案可能是更改 onTapDown 行为;如果用户触摸小部件,应该立即调用它。

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

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

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

链接

Pub.dev - InklWellSplash

GitHub - InkWellSplash

Interactive Example