Android Studio / Flutter / Nexus 6 API 30 上的 GestureDetector OnTap 延迟
GestureDetector OnTap Delay on Android Studio / Flutter / Nexus 6 API 30
想一想极其简单的 flutter 应用程序,它在屏幕上包含一个 Container 小部件,在其上包含 GestureDetector。
main 转到 myApp,main 和 myApp 小部件在同一个 dart 文件中。
myApp 转到 HomePage,这是一个不同的 dart 文件。
HomePage 有一个 Container 和 GestureDetector 小部件。
GestureDetector 的 onTap 函数是:print('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 插件。
关于您的问题,延迟的原因可能有很多:
我猜你是 运行在模拟器上以调试模式运行它,与发布模式相比,调试模式下的性能会很慢且滞后。要在发布模式下测试应用程序,请使用真实设备而不是模拟器,而不是 flutter 运行,使用 flutter 运行 --release.
打印语句有时可能会延迟。与其尝试打印一些东西,不如尝试更新您的 UI。正如在上面的场景中看到的那样,当你多次点击时,你会迫使调试器多次打印相同的语句,因此在出现抖动的情况下,它会检查打印语句是否相同,如果它们相同,它会将所有这些组合起来并打印如下输出:
uid=10153(com.example.vocabulary_master_8) 1.ui identical 4 lines
经过一定的延迟。
所以简而言之,你的代码工作正常,延迟是因为 flutter 需要一些时间来识别和组合相似的打印语句。
是的,我的模拟器也有 GestureDetector
有点慢。我不确定为什么...如果您只需要 Tap 功能,请尝试使用 InkWell
或 Listener
以获得更好的性能...
尝试使用整数变量进行打印,每次按下该图标时该变量都会递增。以您想要的方式打印。
GestureDetector(
child: Icon(Icons.person,color: Colors.black54,),
onTap: (){
i = i+1;
print("clicked person:$i");},
behavior: HitTestBehavior.translucent
),
想一想极其简单的 flutter 应用程序,它在屏幕上包含一个 Container 小部件,在其上包含 GestureDetector。
main 转到 myApp,main 和 myApp 小部件在同一个 dart 文件中。 myApp 转到 HomePage,这是一个不同的 dart 文件。 HomePage 有一个 Container 和 GestureDetector 小部件。
GestureDetector 的 onTap 函数是:print('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 插件。
关于您的问题,延迟的原因可能有很多:
我猜你是 运行在模拟器上以调试模式运行它,与发布模式相比,调试模式下的性能会很慢且滞后。要在发布模式下测试应用程序,请使用真实设备而不是模拟器,而不是 flutter 运行,使用 flutter 运行 --release.
打印语句有时可能会延迟。与其尝试打印一些东西,不如尝试更新您的 UI。正如在上面的场景中看到的那样,当你多次点击时,你会迫使调试器多次打印相同的语句,因此在出现抖动的情况下,它会检查打印语句是否相同,如果它们相同,它会将所有这些组合起来并打印如下输出:
uid=10153(com.example.vocabulary_master_8) 1.ui identical 4 lines
经过一定的延迟。
所以简而言之,你的代码工作正常,延迟是因为 flutter 需要一些时间来识别和组合相似的打印语句。
是的,我的模拟器也有 GestureDetector
有点慢。我不确定为什么...如果您只需要 Tap 功能,请尝试使用 InkWell
或 Listener
以获得更好的性能...
尝试使用整数变量进行打印,每次按下该图标时该变量都会递增。以您想要的方式打印。
GestureDetector(
child: Icon(Icons.person,color: Colors.black54,),
onTap: (){
i = i+1;
print("clicked person:$i");},
behavior: HitTestBehavior.translucent
),