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 真机测试的特殊情况
首次连接设备
后续开发
- 代码修改:使用热重载/热重启,无需重新编译
- 依赖变更:需要重新编译
- 原生配置变更:需要重新编译
优化建议
- 保持应用运行状态
- 使用 Profile 模式进行性能测试
- 避免频繁修改原生配置
- 尽量在开发后期再调整
Info.plist等原生配置
总结
修改类型 | 更新方式 | 耗时 |
UI/业务逻辑代码 | 热重载 (r) | 1-2秒 |
main()/路由配置 | 热重启 (R) | 3-5秒 |
pubspec.yaml | 完全重新编译 | 1-5分钟 |
原生代码/配置 | 完全重新编译 | 1-5分钟 |
代码生成文件 | 生成代码 + 热重启 | 10-30秒 |
大部分情况下,使用热重载即可,无需完全重新编译。
- 作者:SupraYou
- 链接:http://blog.suprayou.com/%E4%BA%A7%E5%93%81%E7%9C%9F%E7%BB%8F/flutter-update-mechanism-in-development-mode
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
