Flutter json_serializable 5.0.0 不能与 auto_route 一起使用

Posted

技术标签:

【中文标题】Flutter json_serializable 5.0.0 不能与 auto_route 一起使用【英文标题】:Flutter json_serializable 5.0.0 is not working along with auto_route 【发布时间】:2021-09-24 20:34:49 【问题描述】:

将 json_serializable 库从 4.1.4 升级到 5.0.0 后出现以下错误

谁能解释我使用的版本有什么问题?

因为没有任何版本的 auto_route_generator 匹配 >2.1.0 =0.40.0 =0.40.0 =5.0.0 依赖于分析器 ^2.0.0,所以 auto_route_generator ^2.1.0 与 json_serializable >=5.0.0 不兼容。 所以,因为 carer_connect 依赖于 json_serializable ^5.0.0 和 auto_route_generator ^2.1.0,所以版本求解失败。 pub get failed (1; 所以,因为 carer_connect 依赖于 json_serializable ^5.0.0 和 auto_route_generator ^2.1.0,版本求解失败。)

这是我的pubspec.yaml 文件

name: demo
description: demo

publish_to: 'none'
version: 1.0.0+1

environment:
  sdk: ">=2.12.0 <3.0.0"


dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter

  cupertino_icons: ^1.0.2
  dio: ^4.0.0
  auto_route: ^2.2.0
  json_serializable: ^5.0.0

dev_dependencies:
  flutter_test:
    sdk: flutter

  flutter_lints: ^1.0.0
  build_runner:
  auto_route_generator: ^2.1.0

flutter:

  uses-material-design: true
  generate: true

  assets:
    - assets/icons/
    - assets/config/

【问题讨论】:

这有什么更新吗? @cubanGuy 我在下面添加了一个解决方案。请检查这是否解决了您的问题。 【参考方案1】:

试试这个代码

json_serializable: any

我希望这会奏效。

【讨论】:

使用any 不是一个好习惯,尤其是在生产中。 dart.dev/tools/pub/dependencies【参考方案2】:

这一步和我一起工作

1 - 在 pubspec.yaml 文件中添加依赖项

  dio: ^4.0.0
  json_serializable: ^4.1.4
  json_annotation: ^4.0.1

2-运行此命令重置版本

dart pub upgrade --null-safety

【讨论】:

【参考方案3】:

发生这种情况是因为 auto_route_generator 在该包内部依赖于 json_serializable: ^4.1.4,但您在外部使用 json_serializable 并且两种情况下使用的版本不匹配,因此出现错误,

对此的一种解决方案是,您可以同时使用这两个版本,并在 dependencies: 中提及一个版本,在 dependency_overrides: 中提及另一个版本,如下所示:

dependencies:
  ...
  json_serializable: ^5.0.0
  ...

dependency_overrides:
  ...
  json_annotation: ^4.0.1
  json_serializable: ^4.1.4
  ...

并且问题应该得到解决。如果出现任何进一步的复杂情况,您可以随时检查软件包内部 pubspec.yaml 中使用的版本,并将它们添加为代码中的 dependency_overrides:

【讨论】:

以上是关于Flutter json_serializable 5.0.0 不能与 auto_route 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:使用 json_serializable 将 json 转换为模型时出现问题

在flutter中使用json_serializable对json对象进行反序列化

Flutter - json_serializable fromJson:在 null 上调用了方法“[]”

如何编写像json_serializable这样的flutter构建器

Flutter json_serializable 如果键可以有不同的名称怎么办

尝试使用 json_serializable 包运行 android 模拟器时出现 Flutter 编译错误