微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

dart 冻结默认为空类

如何解决dart 冻结默认为空类

  @freezed
  class ABCModel with _$ABCModel {
    factory ABCModel({
      @JsonKey(name: "id") @Default('') String id,@JsonKey(name: "name") @Default('') String name,}) = _ABCModel;

    factory ABCModel.fromJson(Map<String,dynamic> json) => _$ABCModelFromJson(json);
  }


  @freezed
  class EFGModel with _$EFGModel {
    factory EFGModel({
      @JsonKey(name: "abc") @Default(ABCModel()) ABCModel abc,//empty ABCModel
    }) = _EFGModel;

    factory EFGModel.fromJson(Map<String,dynamic> json) => _$EFGModelFromJson(json);
  }

如果 EFGModel 得到一个空的或空的 abc json 值,什么是合适的值放在 @Default() 冻结注解上,@Default(ABCModel()) 是不正确的

解决方法

注意下面的 Player.blank() 构造函数。像这样...

@freezed
class Player with _$Player {
  Player._();

  factory Player({
    @Default('') String handle,@Default('') String realname,Contact? contactinfo,@Default(false) bool emailverified,@Default(false) bool showemail,@Default(false) bool showphone,@Default('') String avatarurl,DateTime? datejoined,@Default(0) int transactions,DateTime? datelasttransaction,DateTime? datelastlogin,@Default([]) List<String> tags,@Default([]) List<String> leagues,@Default([]) List<String> events,@Default(0) int views,@Default(0) int likes,@Default(0) int loginfails,@JsonKey(ignore: true) @Default('') String password,@JsonKey(ignore: true) @Default('') String confirm,required Meta meta,}) = _Player;

  factory Player.blank() => Player(contactinfo: Contact(),meta: Meta());
  factory Player.fromJson(Map<String,dynamic> json) => _$PlayerFromJson(json);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。