【发布时间】:2019-07-23 12:01:10
【问题描述】:
我正在尝试将 Firestore 快照()加载到 StreamController 中,以便可以提供给 StreamBuilder,以便可以在应用程序中构建新闻源。
但得到错误:
在 null 上调用了 getter 'stream'。
调用了方法“add” 空。
这是我的代码:
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) {
有人知道解决方案吗? 谢谢!
【问题讨论】:
-
为什么不直接使用-
stream: Firestore.instance.collection(‘info’).snapshots() -
@anmol.majhail 感谢您的回复!不能直接使用,因为这将导致在每个新事件上重建。我发现这也会导致
Navigator.push出现问题,因为Navigator.push可能在StreamBuilder重建时被调用。所以导致 Widget 树问题 -
Streams就是为了这个目的——对每个事件执行操作。使用future而不是流。如果您想获取一次数据。 -
@anmol.majhail 我想要流式传输并自动获取新数据。但是如果用户点击必须取消流来导航
标签: firebase dart flutter stream google-cloud-firestore