Lazy loaded image
产品真经
Flutter 开发模式下的更新机制
字数 808阅读时长 3 分钟
2025-12-15
2025-12-15
type
status
date
slug
summary
tags
category
icon
password

Flutter 开发模式下的更新机制

1. 热重载(Hot Reload)— 最快

适用于大部分代码修改,几乎即时生效(1-2 秒):
支持:
  • UI 代码修改(Widget、样式、布局)
  • 业务逻辑修改
  • 状态管理代码修改
  • 大部分 Dart 代码修改

2. 热重启(Hot Restart)— 较快

重启应用但保持状态,通常 3-5 秒:
适用于:
  • 修改了 main() 函数
  • 修改了全局变量初始化
  • 修改了路由配置
  • 热重载无法生效的情况

3. 完全重新编译 — 较慢

需要完全重新编译的情况(通常 1-5 分钟):
需要重新编译的情况:
  • 修改了 pubspec.yaml(添加/删除依赖)
  • 修改了原生代码(iOS Swift/Objective-C,Android Kotlin/Java)
  • 修改了 Info.plist 或其他原生配置文件
  • 修改了 Podfile 或 Android Gradle 配置
  • 修改了代码生成相关文件(需要重新运行 build_runner

针对你的项目

你的项目使用了代码生成工具,需要注意:

代码生成文件的修改流程

如果修改了需要代码生成的文件(如 @riverpod 注解的代码、Drift 数据库定义):

最佳实践工作流程

日常开发(推荐)

使用 VS Code / Android Studio

  • 热重载:点击 🔥 图标或按 Cmd+S(保存时自动热重载)
  • 热重启:点击 🔄 图标
  • 完全重启:停止应用后重新运行

iOS 真机测试的特殊情况

首次连接设备

后续开发

  • 代码修改:使用热重载/热重启,无需重新编译
  • 依赖变更:需要重新编译
  • 原生配置变更:需要重新编译

优化建议

  1. 保持应用运行状态
    1. 使用 Profile 模式进行性能测试
      1. 避免频繁修改原生配置
          • 尽量在开发后期再调整 Info.plist 等原生配置

      总结

      修改类型
      更新方式
      耗时
      UI/业务逻辑代码
      热重载 (r)
      1-2秒
      main()/路由配置
      热重启 (R)
      3-5秒
      pubspec.yaml
      完全重新编译
      1-5分钟
      原生代码/配置
      完全重新编译
      1-5分钟
      代码生成文件
      生成代码 + 热重启
      10-30秒
      大部分情况下,使用热重载即可,无需完全重新编译。
      上一篇
      Fast Api最佳实践指南
      下一篇
      让程序“隐身”交接:深入理解 exec "$@" 的工程哲学