我尝试将Firestore snapshots()加载到StreamController中,以便可以提供给StreamBuilder,以便可以在应用程序中构建新闻提要。

但是得到错误:



这是我的代码:

StreamController<QuerySnapshot> _localStreamController = StreamController<QuerySnapshot>();

  @override
  void initState() {
    super.initState();

Firestore.instance.collection(‘info’).snapshots().listen((QuerySnapshot querySnapshot) {

//      if(userAdded == null) {
        _localStreamController.add(querySnapshot);
//      }

    });
...
child: StreamBuilder(
stream: _localStreamController.stream,
builder: (context, snapshot) {

有人知道解决方案吗?
谢谢!

最佳答案

您需要初始化流
替换此行:

StreamController<QuerySnapshot> _localStreamController = StreamController<QuerySnapshot>();
与:
StreamController<QuerySnapshot> _localStreamController = StreamController.broadcast();
然后,在构建器中,您将需要考虑尚未加载的数据。因此显示加载屏幕或其他内容可能会很有用。像这样:
if (!snapshot.hasData || snapshot.data.documents.length == 0) {
            return Center(child: const Text('Loading ...'));
          }

关于firebase - 使用Firestore快照中的StreamController的StreamBuilder,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54944875/

10-08 21:23