FireStoreにTimeStamp型のデータを保存する場合、jsonのシリアライズ・デシリアライズにDateTime型とは異なる対応が必要。
モデルクラスにJsonKeyをつける
@JsonKey(fromJson: fromTimeStampJson, toJson: toTimeStampJson)
Timestamp date;
toJson (シリアライズ)
Map<String, dynamic> toTimeStampJson(Timestamp timestamp) {
return {'date': timestamp.toDate().toIso8601String()};
}
fromJson (デシリアライズ)
Timestamp fromTimeStampJson(Map<String, dynamic> json) {
final date = DateTime.parse(json['date'] as String);
return Timestamp.fromDate(date);
}
ちなみにパッケージには、
https://pub.dev/packages/json_serializable
https://pub.dev/packages/json_annotation
https://pub.dev/packages/build_runner
の3つを使用している。