2
  @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);
  }

If EFGModel get an empty or null abc json value, what is the suitable value to put on @Default() freezed annotation, @Default(ABCModel()) is not correct

FeelRightz
  • 2,777
  • 2
  • 38
  • 73
  • It's whatever makes sense for the default to be. We can't read your mind and know what purpose this class serves or the significance of the data is, so the decision is up to you. – Abion47 Jul 03 '21 at 15:39
  • if put `@Default(ABCModel())` will get error – FeelRightz Jul 15 '21 at 14:43
  • And that error is? – Abion47 Jul 15 '21 at 18:24
  • Yeah I struggled a while with this too. I ended up making them without default. Like: ABCModel? abc, and left them null. Then made a named factory constructor that filled in the model props. – Locohost Jul 23 '21 at 14:12

1 Answers1

4

Note the Player.blank() constructor below. Like this...

@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);
Locohost
  • 1,682
  • 5
  • 25
  • 38