Flutter生成JSON序列化模板报错

由 月琳 发布
  | 366 次浏览

问题详情:

在执行flutter packages pub run build_runner build自动生成JSON序列化模板的时候出现了以下报错:

Generator cannot target libraries that have not been migrated to null-safety.
package:flutter_test2/model/recommender.dart:6:7
  ╷
6 │ class Recommender {
  │       ^^^^^^^^^^^
  ╵
[INFO] Running build completed, took 1.0s
[INFO] Caching finalized dependency graph...
[INFO] Caching finalized dependency graph completed, took 41ms
[SEVERE] Failed after 1.1s
pub finished with exit code 1

所用的环境和依赖如下:

# pubspec.yaml
environment:
  sdk: ">=2.7.0 <3.0.0"
dependencies:
  ...
  json_annotation: ^4.0.1
dev_dependencies:
  ...
  json_serializable: ^4.1.1

问题所在和解决方法:

这是由于最新的 json_serializable 依赖于 null safety(Dart新版本引入的机制),而sdk环境较旧不支持该机制引发的报错。

解决方案一:如果要使用最新版本的 json_serializable 则只需要调高项目中的flutter sdk版本,例如

# pubspec.yaml
environment:
  sdk: ">=2.12.0 <3.0.0"
  # sdk: ">=2.7.0 <3.0.0"  原来的sdk版本

解决方案二:如果你不想引入null safety机制,即不想使用新的sdk,则可以使用旧版本的json_serializable,例如:

dependencies:
  ...
  json_annotation: 3.1.1
dev_dependencies:
  ...
  json_serializable: 3.5.1

版权属于:月琳cc
本文链接:https://yleen.cc/archives/99.html
作品采用《知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议》进行许可,转载请务必注明出处!

仅有一条评论

  1. 北京艺术培训
    北京艺术培训 · 2021-05-12 10:02

    感谢分享 赞一个

发表评论