如果使用 onDoubleTap,InkWell 效果开始延迟;想要在触摸小部件后立即触发它
InkWell effect starts delayed if using onDoubleTap; want to trigger that as soon as the widget gets touched
如果您将 onTap
和 onDoubleTap
与 InkWell
并排使用,则单击会延迟(300 毫秒)。我知道双击的识别需要时间,而且效果会延迟,这是一种糟糕的用户交互感觉。
我尝试过的:
我发现,一旦调用任何点击事件回调,InkWell
效果就会开始。如果我单独使用 onTap
,回调和效果会在第一次触摸时立即启动;如果我使用 onTap
和 onDoubleTap
,效果会延迟。
我也试过使用 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 行为;如果用户触摸小部件,应该立即调用它。
我现在找到了一个简单的解决方案。我只使用 InkWell
的 onTap
函数并且自己编写了 onDoubleTap
算法。因此飞溅效果会立即运行,因为未使用原始 onDoubleTap
。 tap 函数本身会延迟(因为使用原始 onDoubleTap
函数也会延迟)。
Pup.dev 套餐
我编写了一个名为 InkWellSplash
的 pub.dev 包。除了启动功能之外,您现在可以调整两次点击之间的最长时间以识别双击。
我很确定这个包会派上用场,对一些开发人员很有用
链接
如果您将 onTap
和 onDoubleTap
与 InkWell
并排使用,则单击会延迟(300 毫秒)。我知道双击的识别需要时间,而且效果会延迟,这是一种糟糕的用户交互感觉。
我尝试过的:
我发现,一旦调用任何点击事件回调,InkWell
效果就会开始。如果我单独使用 onTap
,回调和效果会在第一次触摸时立即启动;如果我使用 onTap
和 onDoubleTap
,效果会延迟。
我也试过使用 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 行为;如果用户触摸小部件,应该立即调用它。
我现在找到了一个简单的解决方案。我只使用 InkWell
的 onTap
函数并且自己编写了 onDoubleTap
算法。因此飞溅效果会立即运行,因为未使用原始 onDoubleTap
。 tap 函数本身会延迟(因为使用原始 onDoubleTap
函数也会延迟)。
Pup.dev 套餐
我编写了一个名为 InkWellSplash
的 pub.dev 包。除了启动功能之外,您现在可以调整两次点击之间的最长时间以识别双击。
我很确定这个包会派上用场,对一些开发人员很有用
链接