Как решить "необработанное исключение: введите '_InternalLinkedHashMap 'не является подтипом типа' List <DocumentSnapshot>'в приведении типа "? - PullRequest
0 голосов
/ 11 февраля 2020

Я использую флаттер с firestore и хочу получить данные.

Вот моя коллекция. Firestore document

и мой код:

  @override
  Stream<List<Notification>> publicNotifications() {
    return publicNotificationCollection
        .document('cEBC37lg7MtrRNCVcGFw')
        .snapshots()
        .asyncMap((snapshot) {
      List<Notification> notificationList;
      final notifications =
          snapshot.data['notifications'] as List<DocumentSnapshot>;
      for (final notification in notifications) {
        notificationList.add(Notification.fromEntity(
            NotificationEntity.fromSnapshot(notification)));
      }
      return notificationList;
    });
  }

Тогда я получил ошибку:

Unhandled Exception: type '_InternalLinkedHashMap<dynamic, dynamic>' is not a subtype of type 'List<DocumentSnapshot>' in type cast

Как устранить эту ошибку? Заранее спасибо!

1 Ответ

0 голосов
/ 11 февраля 2020

Сама ошибка приходит от оператора as. Согласно документации Dart :

Используйте оператор as для приведения объекта к определенному типу тогда и только тогда, когда вы уверены, что объект этого типа.

Гадание по скриншоту notification - это поле документа с вложенными типами карт, и я не думаю, что его можно привести к List<DocumentSnapshot>. Вот почему вы получаете сообщение об ошибке.

У меня нет полной картины всего вашего проекта, но, возможно, вам придется выяснить, как изменить его, не приводя к нужному Notifiaction объекту. Другой вариант, который я вижу, но я не знаю, насколько далеко вы можете изменить структуру пожарного депо, состоит в том, чтобы изменить уведомление на вложенную коллекцию, чем, я думаю, вы сможете запросить объект, подобный List<DocumentSnapshot>.

Надеюсь это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...