flutter 无法使用Serverpod生成toJson方法

okxuctiv  于 2023-05-19  发布在  Flutter
关注(0)|答案(1)|浏览(131)

我在使用serverpod的序列化过程时遇到了问题。如果你想看一下,这里是回购:https://github.com/fhir-fli/fhirpod。我所有的类都被冻结了,我已经调整了所有的fromJson以包括serializationManagers。没有错误。当我尝试生成代码时,如果我从pubspec和所有部分'file.g. dart'中删除json_serializable;代码,然后生成罚款。但是,它不会生成所需的toJson()文件。
然而,当我确实包含json_serializable来生成toJson()方法时,我得到了以下错误消息:

[SEVERE] json_serializable on lib/r4/resource_types/financial/general/general.dart:

Expecting a `fromJson` constructor with exactly one positional parameter. The only extra parameters allowed are functions of the form `T Function(Object?) fromJsonT` where `T` is a type parameter of the target type.
package:fhir/r4/special_types/special_types.dart:483:16

使用serverpod_serialization:1.1.0。
只是希望其他人也有类似的经历,并找到了解决办法。

vlf7wbxs

vlf7wbxs1#

这只是一个部分的答案(和一种黑客),所以任何人都请随时补充。确保在pubspec.yaml文件中有serverpod_serialization,并将其导入到要序列化的任何文件中。
运行flutter pub run build_runner watch --delete-conflicting-outputs。同样,这只是部分答案,因为在修复后您无法运行此命令。然后,搜索并替换所有要为serverpod生成的文件。我做了一些类似的事情,搜索:

.fromJson(Map<String, dynamic> json

并将其改为:

.fromJson(Map<String, dynamic> json, [SerializationManager? serializationManager,]

此时,在服务器目录中导入此包。然后,在server/config/generate.yaml文件中,确保在extraClasses下添加任何类:

type: server

client_package_path: ../fhirpod_client

extraClasses:
  - package:fhir/r5.dart:Account
  - package:fhir/r5.dart:ActivityDefinition
  - package:fhir/r5.dart:ActorDefinition

您现在可以运行serverpod generate,它将生成服务器端代码,但仅作为SerializedEntity,而不是TableRow。

相关问题