使用Firestore快照中的StreamController的StreamBuilder

时间:2019-03-01 12:39:10

标签: firebase dart flutter stream google-cloud-firestore

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

但是出现错误:

  

getter'stream'在null上被调用。

     

调用了“添加”方法   空。

这是我的代码:

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) {

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

1 个答案:

答案 0 :(得分:0)

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

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

具有:

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

然后在构建器中,您要考虑尚未加载的数据。因此显示加载屏幕或其他内容可能会很有用。像这样:

if (!snapshot.hasData || snapshot.data.documents.length == 0) {
            return Center(child: const Text('Loading ...'));
          }