小编kou*_*nex的帖子

自定义 json 转换器,无需包装类即可冻结

我使用冻结的包来处理不可变模型,并利用json_serialized包的内置功能进行 json 序列化。我有一个简单的User类/模型,具有不同的联合类型(UserLoggedInUserGeneralUserError):

@freezed
class User with _$User {
  const factory User(String id, String email, String displayName) =
      UserLoggedIn;
  const factory User.general(String email, String displayName) = UserGeneral;
  const factory User.error(String message) = UserError;

  factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
}
Run Code Online (Sandbox Code Playgroud)

由于我使用多个构造函数并且不希望我的 API 包含runtimeType文档建议的密钥,因此我可以编写一个转换器(向下滚动一点,句子开头为:如果您不控制 JSON 响应,然后您可以实现自定义转换器。)。

因此,基于此,我编写了以下转换器类:

class UserConverter implements JsonConverter<User, Map<String, dynamic>> {
  const UserConverter();

  @override
  User fromJson(Map<String, dynamic> json) {
    if (json['id'] …
Run Code Online (Sandbox Code Playgroud)

flutter json-serializable freezed

3
推荐指数
1
解决办法
2004
查看次数

标签 统计

flutter ×1

freezed ×1

json-serializable ×1