问题描述
我想向 this answer 中的冻结类添加自定义转换器。
我用这个代码试过了:
@freezed
class NewsPost with _$NewsPost {
factory NewsPost({
@JsonKey(name: "date") @TimestampConverter() DateTime? date,}) = _NewsPost;
factory NewsPost.fromJson(Map<String,dynamic> json) =>
_$NewsPostFromJson(json);
}
但是没有用。任何想法都非常受欢迎!
为了您的兴趣,这是我的转换器:
class TimestampConverter implements JsonConverter<DateTime,Timestamp> {
const TimestampConverter();
@override
DateTime fromJson(Timestamp timestamp) {
return timestamp.toDate();
}
@override
Timestamp toJson(DateTime date) => Timestamp.fromDate(date);
}
谢谢:-)
解决方法
嗯,这不是最优雅的解决方案,但它有效。
@freezed
class NewsPost with _$NewsPost {
factory NewsPost({
@JsonKey(
name: "date",fromJson: dateTimeFromJson,fromJson: dateTimeToJson,) DateTime? date,}) = _NewsPost;
factory NewsPost.fromJson(Map<String,dynamic> json) =>
_$NewsPostFromJson(json);
}
DateTime dateTimeFromJson(Timestamp timestamp) {
return timestamp.toDate();
}
Timestamp dateTimeToJson(DateTime date) => Timestamp.fromDate(date);
我认为这是一个解决方案。使用 JsonConverter 我无法让它工作。