如果同时存在 onTap 和 onDoubleTap,可以考虑使用 GestureDetector 中的 onTapCancel 方法来处理。在 onTapCancel 中,可以设置一个延迟执行的操作,如果在延迟时间内没有再次点击,则执行 onTap 操作,否则执行 onDoubleTap 操作。

具体实现可以参考下面的代码:

GestureDetector(
  onTap: () {
    // 在这里处理单击事件
  },
  onDoubleTap: () {
    // 在这里处理双击事件
  },
  onTapCancel: () {
    // 设置一个延迟执行的操作
    Future.delayed(Duration(milliseconds: 250), () {
      // 如果在延迟时间内没有再次点击,则执行 onTap 操作
      if (GestureBinding.instance!.lastPointerDownTime == null) {
        // 在这里处理单击事件
      }
    });
  },
  child: // 子组件
)

在 onTapCancel 中,我们使用了 GestureBinding.instance!.lastPointerDownTime 来判断是否有再次点击。如果 lastPointerDownTime 为 null,则表示在延迟时间内没有再次点击,执行 onTap 操作;否则执行 onDoubleTap 操作

Flutter onTap和onDoubleTap同时存在该怎么办我该如何处理才会出现正常的像是html的正常表现呢?

原文地址: https://www.cveoy.top/t/topic/cZAG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录