【问题标题】:dart freezed @Default doesn't apply defaultValue on JsonKeydart freezed @Default 不会在 JsonKey 上应用 defaultValue
【发布时间】: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 对象时,isCaptainPlayer 对象上设置为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_captainisCaptain 将获得默认值 false

我很困惑,因为freezed's documentation 表示添加@Default 会自动将defaultValue 添加到@JsonKey(...),但这里似乎并非如此。我错过了什么?

【问题讨论】:

    标签: flutter dart freezed


    【解决方案1】:

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

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

    所以通过指定一个JsonKey,你基本上去掉了Freezed添加的隐式默认值。

    【讨论】:

    • 这是有道理的。谢谢雷米!
    猜你喜欢
    • 2021-12-14
    • 1970-01-01
    • 2021-06-21
    • 2022-01-05
    • 1970-01-01
    • 2019-11-05
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多