# #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()