复杂嵌套 Json 序列化 - build_runner 失败

Complex nested Json serialization - build_runner failed

我用 flutter 制作了我的第一个应用程序,它使用复杂的数据结构,对象列表嵌套在对象列表中。现在应用程序的功能已经基本完成,我正在尝试使用 firebase/firestore.

保存应用程序的数据

第一次使用 JSON,所以我发现它有点混乱,但本质上当我尝试编写包含所有其他嵌套对象列表等的顶级对象时,我遇到了一个错误'returns instance of Class' 的行而不是实际保存特定对象。

经过一些研究,我似乎需要使用一种叫做 JSON 序列化的东西来处理这个问题。我将 JSON 序列化、注释和构建 运行ner 依赖项添加到 pubspec.yaml,并在我添加的每个模型定义中:

'part 'class.g.dart''

@JsonSerializable(anyMap: true, explicitToJson: true)

factory Class.fromJson(Map<String, dynamic> data) => _$ClassFromJson(data);

  Map<String, dynamic> toJson() => _$ClassToJson(this);

现在,当我尝试 flutter pub 运行 build_runner build 时,出现错误:

Could not generate fromJson code for mesocycles because of type Mesocycle. package:nav_dummy/models/block.dart:7:19 ╷ 7 │ List mesocycles = []; │ ^^^^^^^^^^ ╵ [SEVERE] Failed after 190ms pub finished with exit code

对于某些上下文,List mesocycles = [];在第二层内,即 Class1.Class2.mesocycles,它包含类型为 Mesocycle.

的第三层对象

不知道为什么当第一级 class 也包含对象列表时我会收到此错误,根据终端错误报告,这似乎不是问题。

如果您知道我该如何继续,请告诉我。该应用程序现在已准备就绪,要让它与数据库很好地配合使用让我感到很沮丧,而且非常沮丧。

更新:我看过这个 post

并发现我在 'Could not generate fromJsoncode forsomeField' 下描述的错误 - 但我的嵌套 class 是用 @JsonSerializable(explicitToJson: true) 注释的,我仍然从 build_runner 得到同样的错误并且无法生成 *.g.dart 文件...真的不确定为什么会这样,除非它与嵌套的 class 存储在列表中这一事实有关,但是作为我在上面说过,顶级对象的结构完全相同,带有另一个 class 的嵌套对象列表,而且它似乎没有抛出任何错误...

它最终生成了 .g.dart class 文件后保存所有并重新启动 vscode。由于之前的构建发生在我将新代码添加到所有模型之前,当我 运行 build_runner 时,这些更改未被识别。