Не удается преобразовать метку времени firetstore в дату и время Flutter

# #flutter #google-cloud-firestore

Вопрос:

Я не могу преобразовать метку времени firestore в дату flutter и действительно перепробовал почти все( включая использование метки времени вместо даты и времени в модели), есть идеи, как исправить эту ошибку. Вот мой код ниже

Модель С Карты

   factory Event.fromMap(Map<String, dynamic> map) {
    return Event(
      id: map['id'],
      organizerId: map['organizerId'],
      organizerName: map['organizerName'],
      eventTime: map['eventTime'].toDate(),
      maxApplicationCount: map['maxApplicationCount'],
      attendedUsers: List<String>.from(map['attendedUsers']),
      eventText: map['eventText'],
      location: Location.fromMap(map['location']),
    );
  }
 

Ошибка

  NoSuchMethodError: Class 'int' has no instance method 'toDate'.
 

Использование метки времени Вместо даты-времени

   factory Event.fromMap(Map<String, dynamic> map) {
    return Event(
      id: map['id'],
      organizerId: map['organizerId'],
      organizerName: map['organizerName'],
      eventTime: map['eventTime'],
      maxApplicationCount: map['maxApplicationCount'],
      attendedUsers: List<String>.from(map['attendedUsers']),
      eventText: map['eventText'],
      location: Location.fromMap(map['location']),
    );
  }
 

Ошибка

 flutter: type 'int' is not a subtype of type 'Timestamp'
 

Есть идеи, как преобразовать метку времени Firestore в дату и время?

карта[‘Время событий’]

 Timestamp(seconds=1620583200, nanoseconds=0)
 

Комментарии:

1. Можете ли вы просто показать карту [«Время событий»], чтобы мы могли на самом деле увидеть, с чем мы здесь работаем?

2. конечно, отредактированный пост.

Ответ №1:

Не могли бы вы просто сделать EventTime динамичным и попробовать eventModel.EventTime.ToDate() везде, где вы его используете

Это работает на меня. Установите и получите такую метку времени

 class EventModel{
      dynamic timestamp;
      SiteModel({this.deletedTimestamp});
      EventModel.fromJson(Map<String, dynamic> json) {
        timestamp=json['timestamp'];
      }
    
      Map<String, dynamic> toJson() {
        final Map<String, dynamic> data =<String, dynamic>{};
        data["timestamp"]=FieldValue.serverTimestamp();
        return data;
      }
 

Используйте его вот так

 eventModel.timestamp.toDate().toString()