flutter - StreamBuilder 在颤动中列出条件后,帖子的顺序不起作用
问题描述
我正在尝试构建一个评论应用程序。我试图过滤掉用户隐藏的评论,所以我有一个以下 streamBuilder 类:
return StreamBuilder(
stream: reviewRef.snapshots(),
builder: (context, snapshot) {
if (snapshot.hasData) {
final documents =
snapshot.data.docs.where((snapshot) => snapshot.data()
["hidingUserId"] == null ||
snapshot.data()['isHiddenBy'] !=
FirebaseAuth.instance.currentUser.uid).toList();
if (documents.length == 0) {
return Padding(
padding: const EdgeInsets.only(top: 100.0),
child: Container(
height: 60.0,
width: 100.0,
child: Center(
child: Text(language?.noReviews ?? ""),
),
),
);
} else {
return ListView.builder(
padding: padding,
scrollDirection: scrollDirection,
itemCount: documents.length,
shrinkWrap: shrinkWrap,
physics: physics,
itemBuilder: (BuildContext context, int index) {
return itemBuilder(context, documents[index]);
},
);
}
} else {
return circularProgress(context);
}
},
);
然后在我的 readReviews 类中,我有 5 个显示所有评论的可滑动片段,由 streamBuilderWrapper 显示,我在其中对流进行排序,并根据某种顺序显示评论,例如评级 = 星或喜欢:
StreamBuilderWrapper(
shrinkWrap: true,
stream: reviewRef
.orderBy('stars', descending: true)
.orderBy('timestamp', descending: true)
.snapshots(),
physics: NeverScrollableScrollPhysics(),
itemBuilder: (_, DocumentSnapshot snapshot) {
Review review= Review.fromJson(snapshot.data());
return review.reviewId != null
? Padding(
padding: const EdgeInsets.only(bottom: 12.0),
child: Review(review: reviews),
)
: Container(
child: Center(
child: Text('blahblahblah'),
),
);
},
),
但是,我在 StreamBuilderWrapper 中的排序不起作用。帖子显示了一些随机顺序,所有五个片段都相同。隐藏帖子,终于可以了!为什么订购不起作用?感谢您的帮助。
解决方案
推荐阅读
- html - 滚动 DIV 内容而不是浏览器窗口
- ios - Swift 5 错误:“UIImage”在此上下文中的类型查找不明确
- database - 删除列数据会减少数据库大小吗?
- python - 如何捕获exit()的输出
- javascript - 节点 JS 获取请求,接收 SSL 警报编号 40,适用于 curl 和 python
- google-cloud-dataflow - 谷歌云数据流中的 Apache Beam 是否跟踪临时位置的中间文件?
- reactjs - 快照测试不起作用 Jest Reactjs
- typescript - 如何:接受只读类型的泛型?
- gcloud - gcloud init 使用 279.0.0 生成错误的 url
- android - Material Components 主题的描述?