微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android Studio / Flutter / Nexus 6 API 30 上的 GestureDetector OnTap 延迟

如何解决Android Studio / Flutter / Nexus 6 API 30 上的 GestureDetector OnTap 延迟

考虑一个极其简单的 Flutter 应用程序,它在屏幕上包含一个 Container 小部件,并在其上包含 GestureDetector。

main 转到 myApp,main 和 myApp 小部件在同一个 dart 文件中。 myApp 转到 HomePage,这是一个不同的 dart 文件。 HomePage 有一个 Container 和 GestureDetector 小部件。

GestureDetector 的 onTap 函数是:print('pressed');

点击容器时第一次出现“pressed”。问题是我在这个容器上敲了几次。延迟后出现“pressed”。有时我会在编译器的消息后看到它。

uid=10153(com.example.vocabulary_master_8) 1.ui identical 4 lines

这是我的 Flutter doctor -v 发现。

[!] Android Studio (version 4.1.0)
    • Android Studio at C:\Program Files\Android\Android Studio
    X Flutter plugin not installed; this adds Flutter specific functionality.
    X Dart plugin not installed; this adds Dart specific functionality.
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)

在我将 Android Studio 升级到 4.1.2 和 Nexus 6 API 30 后,我开始收到此错误和延迟。

你能请人帮忙吗? 最好的问候。

解决方法

首先你应该安装由 flutter doctor 检测到的 Dart 插件。

关于您的问题,延迟的原因可能有很多:

  1. 我猜您是在模拟器上以调试模式运行它,与发布模式相比,调试模式下的性能会很慢且滞后。要在发布模式下测试应用,请使用真实设备而不是模拟器,并使用 flutter run --release 代替 flutter run。

  2. print 语句有时可能会延迟。与其尝试打印某些东西,不如尝试更新您的 UI。在上面的场景中可以看到,当您多次点击时,您会强制调试器多次打印相同的语句,因此在抖动的情况下,它会检查打印语句是否相同,如果它们相同,它将组合所有这些并打印如下输出:

uid=10153(com.example.vocabulary_master_8) 1.ui identical 4 lines

经过一定的延迟。

简而言之,您的代码运行良好,延迟是因为 Flutter 需要一些时间来识别和组合类似的打印语句。

,

尝试使用每次按下图标时递增的整数变量进行打印。以您想要的方式打印。

GestureDetector(
            child: Icon(Icons.person,color: Colors.black54,),onTap: (){
              i = i+1;
              print("clicked person:$i");},behavior: HitTestBehavior.translucent
          ),
,

是的,我的模拟器中也有 GestureDetector 慢一点。我不知道为什么...如果您只需要 Tap 功能,请尝试使用 InkWellListener为了更好的性能...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。