Flutter 如何将具有时间戳字段的firestore文档数据转换为通过冻结dart包生成的数据类?
我的Dto的结构如下所示-Flutter 如何将具有时间戳字段的firestore文档数据转换为通过冻结dart包生成的数据类?,flutter,dart,Flutter,Dart,我的Dto的结构如下所示- @freezed abstract class MessageDto with _$MessageDto{ factory MessageDto({ String message, @JsonKey(name: 'message_type') String messageType, @JsonKey(name: 'sender_id') String senderId, @JsonKey(name: 'sent_at') Times
@freezed
abstract class MessageDto with _$MessageDto{
factory MessageDto({
String message,
@JsonKey(name: 'message_type') String messageType,
@JsonKey(name: 'sender_id') String senderId,
@JsonKey(name: 'sent_at') Timestamp sendAt,
}) = _MessageDto;
factory MessageDto.fromFirestore(DocumentSnapshot doc) {
Map<String, dynamic> json = doc.data;
return MessageDto.fromJson(json);
}
factory MessageDto.fromJson(Map<String, dynamic> json) => _$MessageDtoFromJson(json);
}
@冻结
带有$MessageDto的抽象类MessageDto{
工厂信息({
字符串消息,
@JsonKey(名称:“消息类型”)字符串消息类型,
@JsonKey(名称:'sender_id')字符串senderId,
@JsonKey(名称:'sent_at')时间戳sendAt,
})=_MessageDto;
工厂消息发送至FireStore(文档快照文档){
Map json=doc.data;
返回MessageDto.fromJson(json);
}
工厂MessageDto.fromJson(映射json)=>\u$MessageDtoFromJson(json);
}
您可以将自定义的
fromJson
和toJson
函数传递给@JsonKey
。
Timestamp\u sendAtFromJson(Timestamp Timestamp)=>Timestamp;
@冻结
带有$MessageDto的抽象类MessageDto{
工厂信息({
字符串消息,
@JsonKey(名称:“消息类型”)字符串消息类型,
@JsonKey(名称:'sender_id')字符串senderId,
@JsonKey(名称:'send_at',fromJson:_sendAtFromJson)时间戳sendAt,
})=_MessageDto;
工厂消息发送至FireStore(文档快照文档){
Map json=doc.data;
返回MessageDto.fromJson(json);
}
工厂MessageDto.fromJson(映射json)=>\u$MessageDtoFromJson(json);
}
您找到解决方案了吗?有同样的问题,正在寻找解决方案。找到了解决方案,请参阅下面的答案。我正在从另一个线程交叉发布。。。见:
Timestamp _sendAtFromJson(Timestamp timestamp) => timestamp;
@freezed
abstract class MessageDto with _$MessageDto{
factory MessageDto({
String message,
@JsonKey(name: 'message_type') String messageType,
@JsonKey(name: 'sender_id') String senderId,
@JsonKey(name: 'sent_at', fromJson: _sendAtFromJson) Timestamp sendAt,
}) = _MessageDto;
factory MessageDto.fromFirestore(DocumentSnapshot doc) {
Map<String, dynamic> json = doc.data;
return MessageDto.fromJson(json);
}
factory MessageDto.fromJson(Map<String, dynamic> json) => _$MessageDtoFromJson(json);
}