Flutter 热重载、热重启和冷重启

333 阅读1分钟

Flutter 热重载、热重启和冷重启

Hot Reload 热重载

  • 基于 Dart 的 JIT 即时编译,仅增量编译修改的代码,通过动态注入替换正在运行的 Dart VM 虚拟机中的对应代码,Flutter 会触发 build 方法重新构建 UI,但会保留应用内存状态(比如用户输入数据、用户的登录状态、页面位置和网络请求结果等)
  • 适用于修改 UI 布局(比如颜色、文本样式)
  • 支持添加新 Widget、修改 Widget 属性
  • 支持业务逻辑的调整(比如条件判断、函数实现更新)
  • main 函数、initState 函数不会重新执行
  • 无法处理类结构变更(比如添加或删除类、增删类字段、修改方法签名、变更继承关系)
  • 无法处理全局变量或静态变量的修改

Hot Restart 热重启

  • 终止当前 Dart VM 虚拟机进程,重新编译所有 Dart 代码,会重建所有 Widget 和状态,会清除所有内存状态(比如用户输入数据、页面位置),保留持久化存储数据 ,保留原生代码的编译结果
  • main 函数、initState 函数会重新执行
  • 更新类结构(比如添加或删除类、增删类字段、修改方法签名、变更继承关系)
  • 更新全局变量、静态变量
  • 无法处理原生代码修改

Cold Restart 冷重启

  • 也叫 Full Restart 完全重启
  • 关闭应用进程后重新启动,彻底清除所有状态
  • 重新编译原生代码