Flutter 的热重载功能可帮助您在无需重新启动应用程序的情况下快速、轻松地测试、构建用户界面、添加功能以及修复错误。通过将更新的源代码文件注入到正在运行的 Dart 虚拟机(VM)来实现热重载。在虚拟机使用新的字段和函数更新类之后, Flutter 框架会自动重新构建 widget 树,以便您可以快速查看更改的效果。
要热重载 Flutter 应用程序:
(1)在支持 Flutter 编辑器 或终端窗口运行应用程序,物理机或虚拟器都可以。 Flutter 应用程序只有在调试模式下才能被热重载。
(2)修改项目中的一个Dart文件。大多数类型的代码更改可以热重载;一些需要重新启动应用程序的更改列表,请参阅 限制。
(3)如果您在支持 Flutter IDE 工具的 IDE /编辑器中工作,请选择 Save All (cmd-s/ctrl-s),或单击工具栏上的 Hot Reload 按钮。
如果您正在使用命令行 flutter run 运行应用程序,请在终端窗口输入 r。
成功执行热重载后,您将在控制台中看到类似于以下内容的消息:
Performing hot reload...Reloaded 1 of 448 libraries in 978ms.
应用程序更新以反映您的更改,并且应用程序的当前状态(上面示例中的计数器变量的值)将保留。您的应用程序将继续从之前运行热重载命令的位置开始执行。代码被更新并继续执行。
只有修改后的 Dart 代码再次运行时,代码更改才会产生可见效果。具体来说,热重载会导致所有现有的 widgets 重新构建。只有与 widgets 重新构建相关的代码才会自动重新执行。
接下来的部分将介绍修改后的代码在热重载后不会再次运行的常见情况。在某些情况下,对 Dart 代码的小改动将确保您能够继续使用热重载。