【发布时间】:2021-08-14 14:20:17
【问题描述】:
我有一个名为 Player (player.dart) 的类,它有一个名为 isCaptain 的字段:
@JsonKey(name: "is_captain") @Default(false) bool isCaptain,
上面的行在player.g.dart 中产生以下内容:
isCaptain: json['is_captain'] as bool,
当我使用缺少is_captain 键的Player.fromJson(playerJson) 创建Player 对象时,isCaptain 在Player 对象上设置为null,而不是@Default 提供的false。
当我将defaultValue: false 添加到@JsonKey(...) 时,如下所示:
@JsonKey(name: "is_captain", defaultValue: false) @Default(false) bool isCaptain,
...player.g.dart 中的实现更改为:
isCaptain: json['is_captain'] as bool? ?? false,
现在一切正常,如果 API 响应中不存在 is_captain,isCaptain 将获得默认值 false。
我很困惑,因为freezed's documentation 表示添加@Default 会自动将defaultValue 添加到@JsonKey(...),但这里似乎并非如此。我错过了什么?
【问题讨论】: