firebase - 在flutter中过滤来自firebase的数据
问题描述
在我的系统中,有状态为“已批准”和“未批准”的通知。我只想显示“未批准”的通知,我想通过使用颤振应用程序将它们转换为“已批准”。这是我的火力基地的截图。
通过使用以下代码,我可以显示通知所有通知列表
Widget build(BuildContext context) {
final notices = Provider.of<List<Notice>>(context) ?? [];
return StreamBuilder<List<Notice>>(
stream: NoticeService().notices,
builder: (context, snapshot) {
if(snapshot.hasData){
return GridView.builder (
itemCount: notices.length,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 1),
// ignore: missing_return
itemBuilder: (context,index){
return SingleNotice(
notice:notices[index]
);
}
);
}else{
return(Text('No List'));
}
}
);
}
我像这样创建通知流
final CollectionReference noticeCollection=Firestore.instance.collection('Notices');
//notice list from snapshot
List<Notice>_noticeListFromSnapshot(QuerySnapshot snapshot){
return snapshot.documents.map((doc){
return Notice(
title:doc.data['title'] ?? '',
url: doc.data['url'] ?? '',
category: doc.data['noticecategory'] ?? 'General',
status: doc.data['status'] ?? 'unapproved',
dateTime: doc.data['dateTime'] ?? '',
noticeId: doc.data['noticeId'] ?? ''
);
}).toList();
}
Stream<List<Notice>>get notices{
return noticeCollection.snapshots().map(_noticeListFromSnapshot);
}
那么如何过滤未批准的通知并显示它们。
解决方案
要仅获取未经批准的文档,您可以使用查询:
final CollectionReference noticeCollection=Firestore.instance.collection('Notices');
final Query unapproved = noticeCollection.where("status", isEqualTo: "unapproved")
然后用它代替集合:
Stream<List<Notice>>get notices{
return unapproved.snapshots().map(_noticeListFromSnapshot);
}
推荐阅读
- powershell - 使用 Nexus API 和 PowerShell 上传工件
- c++ - 阅读标准输入 C++ 时对行为感到困惑
- java - 输入 JavaFX TextField 的文本不显示 - 三星 Galaxy S9
- django - 静态文件不加载
- c - 如何调试宏?
- javascript - fontawesome onclick 图标使用材料表更改角度
- firebase - 通过 Firebase Cloud Function 向附近的人发送推送通知而不手动管理推送令牌?
- windows - Powershell脚本未检测到添加到网络驱动器文件夹中的文件
- android - WorkManager 工人类在应用程序关闭时重新开始工作
- reactjs - react-pdf 无法呈现 base64 PDF 数据,解释为十六进制字符串