从扑扑的火力基地过滤数据

时间:2020-07-18 11:04:30

标签: firebase flutter dart google-cloud-firestore

在我的系统中,通知的状态均为“已批准”和“未批准”。我只想显示“未批准”通知,并希望通过使用flutter应用程序将其“批准”转换。 这是我的firebase的屏幕截图。 enter image description here

通过使用以下代码,我可以显示所有通知列表的通知

  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);
  }

然后如何过滤未批准的通知并显示它们。

1 个答案:

答案 0 :(得分:2)

要仅获取未批准的文档,您可以use a query

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);
  }