【发布时间】:2021-09-27 15:17:43
【问题描述】:
我正在使用 Streambuilder 并从 firebase 加载快照。加载快照后,我将数据放入创建小部件结构的 Post.dart 中。我的代码可以获取数据,但是当我从火力库中删除帖子时,它仍然显示相同的帖子,但最后一个消失而不是删除的帖子。但是,如果我更改页面并返回,正确的页面将被删除,一切都很好。所以我认为flutter知道我正在改变我的firebase,但不知道如何将它映射到我的帖子中。有什么想法吗?
StreamBuilder(
stream: FirebaseFirestore.instance
.collection("timeline")
.doc(widget.currentUser.id)
.collection('timelinePosts')
.orderBy('timestamp', descending: true)
.snapshots()
builder: (BuildContext context,
AsyncSnapshot<QuerySnapshot> streamSnapshot) {
var items = streamSnapshot.data != null &&
streamSnapshot.data.docs != null
? streamSnapshot.data.docs
: [];
List<Post> posts =
items.map((doc) => Post.fromDocument(doc)).toList();
return !streamSnapshot.hasData ||
streamSnapshot.connectionState ==
ConnectionState.waiting
? Center(
child: CircularProgressIndicator(),
)
: Column(
children: posts);
})
Post 类似于
@override
Widget build(BuildContext context) {
return Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
...
],
);
}
【问题讨论】:
-
永远不要在“stream:”调用中编写流。
-
@RandalSchwartz 为什么?如果是问题,我怎样才能让它变得更好?
标签: firebase flutter google-cloud-firestore stream-builder