问题详情:
在执行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://kerrinz.com/archives/99.html
作品采用《知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议》进行许可,转载请务必注明出处!
北京艺术培训 · 2021-05-12 10:02
感谢分享 赞一个