Search code examples
jsonflutterfirebasegoogle-cloud-firestoreserialization

Convert DateTime as TimeStamp using jsonSerializable in Flutter


While we serialize or de-serialize the model using jsonSerializable in Flutter it converts the DateTime as String

class Task {
 final DateTime dateTime;
 final String taskName;

 Task({
  required this.dateTime,
  required this.taskName
 }):
}

Instead of converting as string it should convert as TimeStamp


Solution

    1. We can annotate the field with @TimeStampConverter
    class Task {
     @TimeStampConvertor
     final DateTime dateTime;
     final String taskName;
    
     Task({
      required this.dateTime,
      required this.taskName
     }):
    }
    
    1. Create a class for TimeStampConverter
    class TimestampConverter implements JsonConverter<DateTime, Timestamp> {
      const TimestampConverter();
    
      @override
      DateTime fromJson(Timestamp timestamp) {
        return timestamp.toDate();
      }
    
      @override
      Timestamp toJson(DateTime date) => Timestamp.fromDate(date);
    }