firebase - Streambuilder 没有在 Flutter 中更新
问题描述
我正在使用 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>[
...
],
);
}
解决方案
我放弃 2 美分可能有点晚了,但您可以尝试将此代码添加到您的帖子小部件中:
@override
void didUpdateWidget(Post oldWidget) {
//add the code you want it to update inside your Post widget.
super.didUpdateWidget(oldWidget);
}
推荐阅读
- python - 你如何清除内存使用情况?
- apache-spark - Spark 事件日志目录
- angular - 当输入为 Number 类型时,在模糊时触发 ValueChanges
- python - Plotly Express:您可以在 px.choropleth 中手动定义图例吗?
- powerbi - 如何使用 DAX 在同一个表中按选定值进行过滤?
- php - 函数的参数太少,通过了 1 个,预期正好有 2 个 - Laravel
- javascript - 当我使用 ajax 请求时,为什么我的快速服务器中的 JSON 文件没有下载?
- pdf - 如何从命令行将 PDF 文档的页面合并为单个页面?
- ruby-on-rails - Rolify 与具有特定角色的用户建立关联
- postgresql - 如果两个具有不同隔离级别的事务访问同一个表会发生什么