swagger_generator_flutter/DEPENDENCY_UPDATE.md

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 -

解决的问题

  1. build_runner 缓存损坏: 通过升级到最新版本解决
  2. 版本冲突:
    • 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

注意事项

  1. Freezed 3.x 迁移:

    • 建议使用 Dart 3 的原生 switch 表达式
    • 旧的 when/map 方法仍然可用,但已标记为遗留功能
  2. analyzer 版本:

    • 当前配置使用 analyzer 8.x
    • 避免使用需要 analyzer 9.x 的包版本
  3. pub.dev 镜像:

    • 如果使用国内镜像 (pub.flutter-io.cn),可能需要等待同步
    • 建议使用官方源或清华镜像

参考链接