3.6 KiB
3.6 KiB
依赖包版本更新说明
更新日期
2025-11-21
更新内容
主项目 (pubspec.yaml)
更新前
dependencies:
json_annotation: ^4.8.1
freezed_annotation: ^2.4.1
dev_dependencies:
build_runner: ^2.4.7
json_serializable: ^6.7.1
retrofit_generator: ^8.0.0
freezed: ^2.4.7
更新后
dependencies:
json_annotation: ^4.9.0
freezed_annotation: ^3.1.0
dev_dependencies:
build_runner: ^2.10.4
json_serializable: ^6.11.2
retrofit_generator: ^10.2.0
freezed: ^3.2.3
Example 项目 (example/pubspec.yaml)
更新前
dependencies:
json_annotation: ^4.9.0
freezed_annotation: ^2.4.1
dev_dependencies:
build_runner: ^2.4.7
retrofit_generator: ^9.0.0
json_serializable: ^6.7.1
freezed: ^2.4.7
更新后
dependencies:
json_annotation: ^4.9.0
freezed_annotation: ^3.1.0
dev_dependencies:
build_runner: ^2.10.4
retrofit_generator: ^10.2.0
json_serializable: ^6.11.2
freezed: ^3.2.3
版本说明
build_runner
- 旧版本: 2.4.7
- 新版本: 2.10.4
- 发布时间: 2天前 (2025-11-19)
- 说明: 最新稳定版本,修复了多个已知问题
json_serializable
- 旧版本: 6.7.1
- 新版本: 6.11.2
- 说明: 使用 6.11.2 而非 6.11.3,因为 6.11.3 与 freezed 3.2.3 存在 analyzer 版本冲突
retrofit_generator
- 旧版本: 8.0.0 / 9.0.0
- 新版本: 10.2.0
- 发布时间: 33小时前 (2025-11-20)
- 说明: 最新版本,支持更多特性
freezed
- 旧版本: 2.4.7
- 新版本: 3.2.3
- 发布时间: 2个月前 (2025-09-10)
- 重要变更:
- 需要 freezed_annotation 3.1.0+
- 支持 Dart 3 的原生模式匹配
- 建议使用
switch表达式替代when/map方法
freezed_annotation
- 旧版本: 2.4.1 / 2.4.4
- 新版本: 3.1.0
- 说明: 必须升级到 3.x 以配合 freezed 3.x
json_annotation
- 旧版本: 4.8.1
- 新版本: 4.9.0
- 说明: 保持 4.x 版本以确保兼容性
版本兼容性矩阵
| 包名 | 版本 | analyzer 依赖 | 兼容性 |
|---|---|---|---|
| freezed 3.2.3 | ✅ | 7.5.9 - 9.0.0 | ✅ |
| json_serializable 6.11.2 | ✅ | 8.x | ✅ |
| json_serializable 6.11.3 | ❌ | 9.0.0+ | ❌ 与 freezed 冲突 |
| build_runner 2.10.4 | ✅ | - | ✅ |
| retrofit_generator 10.2.0 | ✅ | - | ✅ |
解决的问题
- build_runner 缓存损坏: 通过升级到最新版本解决
- 版本冲突:
- freezed 3.x 需要 freezed_annotation 3.x
- freezed 3.2.3 与 json_serializable 6.11.3 存在 analyzer 版本冲突
- 使用 json_serializable 6.11.2 解决冲突
清理步骤
如果遇到问题,执行以下清理步骤:
# 1. 清理缓存
rm -rf .dart_tool
rm -rf pubspec.lock
# 2. 重新获取依赖
flutter pub get
# 3. 清理构建文件
flutter clean
# 4. 重新运行 build_runner
flutter pub run build_runner build --delete-conflicting-outputs
注意事项
-
Freezed 3.x 迁移:
- 建议使用 Dart 3 的原生
switch表达式 - 旧的
when/map方法仍然可用,但已标记为遗留功能
- 建议使用 Dart 3 的原生
-
analyzer 版本:
- 当前配置使用 analyzer 8.x
- 避免使用需要 analyzer 9.x 的包版本
-
pub.dev 镜像:
- 如果使用国内镜像 (pub.flutter-io.cn),可能需要等待同步
- 建议使用官方源或清华镜像