首页 > 解决方案 > 未从 firebase 数据库获取数据。流转换器错误

问题描述

我刚刚更新了我的颤振应用程序中的软件包。所有功能之前都可以正常工作,但在我对代码进行更改(即,将文档更改为 doc,将 getDocuments 更改为 get 等)之后,它没有从 firebase 获取数据。

这段代码应该从 firebase 中的“事件”集合中获取特定事件。在另一个页面中,我显示它们。

错误消息是说它与下面代码中的 StreamTransformer 行有关。

错误消息:AsyncSnapshot<Stream<List<DocumentSnapshot<Object?>>>>(ConnectionState.done, null, type '_StreamHandlerTransformer<QuerySnapshot<Object?>, List<DocumentSnapshot<Object?>>>' 不是类型的子类型'StreamTransformer<QuerySnapshot<Map<String, dynamic>>, List<DocumentSnapshot>>', #0 EventProvider._getListOfHosting

//get events
Future<Stream<List<DocumentSnapshot>>> _getListOfHosting({
@required String currentUserId,
//@required bool isHosting,
@required bool isPresent,
//bool isGetRequest = false,
})   async {
return _firestore.collection('events').snapshots().transform(
  StreamTransformer<QuerySnapshot, List<DocumentSnapshot>>.fromHandlers(
    handleData: (querySnapshot, sink) async {
      print('loading friend list of $currentUserId');

      final eventList = await _firestore
          .collection('events')
          .where('host', isEqualTo: currentUserId)
          .get();
      print(eventList);

      //event list contains all events that have the host as current user

      final _hostsList = List<DocumentSnapshot>();
      final _presentHostList = List<DocumentSnapshot>();

      print('HostList: $_hostsList');

      for (final doc in eventList.docs) {
        if (DateTime.parse(doc.get('date'))
                .day
                .compareTo(DateTime.now().day) <=
            0) {
          _presentHostList.add(doc);
        }
        _hostsList.add(doc);
      }
      print('_hostList: $_hostsList');
      if (isPresent) {
        sink.add(_presentHostList);
      } else {
        sink.add(_hostsList);
      }
    },
  ),
);

截至目前,我被困在加载循环屏幕中。我究竟做错了什么?

标签: firebaseflutterdartgoogle-cloud-firestore

解决方案


推荐阅读