0

我有一个名为Player( player.dart) 的类,它有一个名为 的字段isCaptain

@JsonKey(name: "is_captain") @Default(false) bool isCaptain,

上面的行在 中产生以下内容player.g.dart

isCaptain: json['is_captain'] as bool,

Player当我使用Player.fromJson(playerJson)缺少is_captain键的对象创建对象时,isCaptain将其设置为null对象Playerfalse不是@Default.

当我添加defaultValue: false如下@JsonKey(...)

@JsonKey(name: "is_captain", defaultValue: false) @Default(false) bool isCaptain,

...实施player.g.dart更改为:

isCaptain: json['is_captain'] as bool? ?? false,

现在一切都按预期工作,如果is_captainAPI 响应中不存在,则isCaptain获取默认值false.

我很困惑,因为freezed 的文档说添加也会@Default自动添加defaultValue@JsonKey(...)但这里似乎并非如此。我错过了什么?

4

1 回答 1

1

Freezed 添加了一个具有默认值的隐式 JsonKey。

您的问题是您传递了一个自定义 JsonKey。在这种情况下,您的注释将接管 Freezed 自动生成的内容。

因此,通过指定 JsonKey,您基本上删除了 Freezed 添加的隐式默认值。

于 2021-08-14T16:06:23.183 回答