我遇到的问题是我的应用程序冻结,但仅限于发布版本。对于冻结,我的意思是它没有响应,所有动画都被冻结,甚至浏览器的刷新按钮也没有响应。在 Edge 和 Chrome 中均如此。而且这种情况只发生在 Flutter 3.13 中,3.10 中没有。我的应用程序适用于网络和桌面(Windows),桌面版本运行良好。它也会发生在配置文件构建中,但不会发生在调试构建中,这使得调试非常困难。当发生这种情况时,我的任务管理器显示 Chrome 进程的 CPU 使用率持续为 15%。记忆保持不变。
项目代码非常庞大且复杂,因此不可能显示可重现的代码,但我会尝试解释会发生什么。我拥有的是一个登录页面,它通向一个加载页面,该加载页面通向一个主页。它在显示加载页面时已经冻结,但通过使用打印语句进行调试,我可以看到主页代码实际上已经到达。当我在主页代码中省略小部件树的某些部分时,它会走得更远,但最终仍然会冻结。奇怪的是,当我直接导航到主页跳过登录和加载屏幕时,它似乎工作正常。好像导航本身可能会引起问题。我正在使用最新版本的 GetX (4.6.6) 进行路由,我认为问题可能存在,但我尝试删除所有与 GetX 相关的路由代码并使用 Flutter 的正常导航系统重新制作它,但问题仍然存在。
知道可能是什么问题或者如何调试这个问题吗?
我终于找到了解决办法。问题出在包flutter_widget_from_html_core。我使用的是0.9.1版本。此错误在其 github 上进行了描述:https://github.com/daohoangson/flutter_widget_from_html/issues/1007
使用此软件包的最新版本(0.10.5)解决了该问题。
所以我自己的一个教训是尝试首先更新所有软件包。尽管仍然令人沮丧,但没有迹象表明这个包是罪魁祸首。而且我的项目有很长的依赖项列表,因此检查所有依赖项可能非常麻烦