如何使用firebase制作颤振查询过滤器?

如何使用firebase制作颤振查询过滤器?,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我正在制作一些报告折线图,其中包含每个月的订单/销售信息,我有一份包含所有已完成销售的文档 我想做的是得到一个 每个月/周/日订单计数(我创建了一个包含示例数据的字符串字段:2020-08-02T18:28:09.950990) 我还想为我得到的数据添加开始日期和结束日期,这样我可以从8月1日到8月12日调用代码,或者从2019年8月1日到2020年8月1日调用代码 然后,所有这些将显示在折线图中,使用chart_颤振插件 我已经试过了,但它只显示返回指定路径(/orders)上的所有文档

我正在制作一些报告折线图,其中包含每个月的订单/销售信息,我有一份包含所有已完成销售的文档

我想做的是得到一个

  • 每个月/周/日订单计数(我创建了一个包含示例数据的字符串字段:2020-08-02T18:28:09.950990)
  • 我还想为我得到的数据添加开始日期和结束日期,这样我可以从8月1日到8月12日调用代码,或者从2019年8月1日到2020年8月1日调用代码
  • 然后,所有这些将显示在折线图中,使用chart_颤振插件
我已经试过了,但它只显示返回指定路径(/orders)上的所有文档

流采集流({
@必需的字符串路径,
@所需的T生成器(地图数据、字符串文档ID),
查询queryBuilder(查询查询),
整数排序(T lhs,T rhs),
}) {
Query=Firestore.instance.collection(路径);
if(queryBuilder!=null){
query=queryBuilder(查询);
}
最终流快照=query.snapshots();
返回snapshots.map((快照){
最终结果=snapshot.documents
.map((快照)=>builder(snapshot.data,snapshot.documentID))
.其中((值)=>value!=null)
.toList();
if(排序!=null){
结果.排序(排序);
}
返回结果;
});
}
我还尝试创建一个集合流,其中包含2个用于数据筛选的开始日期和结束日期

 Stream<List<T>> collectionStreamWhere2<T>({
    @required String path,
    @required String whereKey1,
    @required String whereKey2,
    @required dynamic whereValue1,
    @required dynamic whereValue2,
    @required T builder(Map<String, dynamic> data, String documentID),
    Query queryBuilder(Query query),
    int sort(T lhs, T rhs),
  }) {
    Query query = Firestore.instance.collection(path).where(whereKey1, isEqualTo: whereValue1).where(whereKey2, isEqualTo: whereValue2);
    if (queryBuilder != null) {
      query = queryBuilder(query);
    }
    final Stream<QuerySnapshot> snapshots = query.snapshots();
    return snapshots.map((snapshot) {
      final result = snapshot.documents
          .map((snapshot) => builder(snapshot.data, snapshot.documentID))
          .where((value) => value != null)
          .toList();
      if (sort != null) {
        result.sort(sort);
      }
      return result;
    });
  }
Stream collectionstreamwhere 2({
@必需的字符串路径,
@所需字符串,其中键1,
@所需字符串,其中键2,
@所需动态值1,
@所需动态值2,
@所需的T生成器(地图数据、字符串文档ID),
查询queryBuilder(查询查询),
整数排序(T lhs,T rhs),
}) {
Query Query=Firestore.instance.collection(path).where(whereKey1,isEqualTo:whereValue1).where(whereKey2,isEqualTo:whereValue2);
if(queryBuilder!=null){
query=queryBuilder(查询);
}
最终流快照=query.snapshots();
返回snapshots.map((快照){
最终结果=snapshot.documents
.map((快照)=>builder(snapshot.data,snapshot.documentID))
.其中((值)=>value!=null)
.toList();
if(排序!=null){
结果.排序(排序);
}
返回结果;
});
}
 Stream<List<T>> collectionStreamWhere2<T>({
    @required String path,
    @required String whereKey1,
    @required String whereKey2,
    @required dynamic whereValue1,
    @required dynamic whereValue2,
    @required T builder(Map<String, dynamic> data, String documentID),
    Query queryBuilder(Query query),
    int sort(T lhs, T rhs),
  }) {
    Query query = Firestore.instance.collection(path).where(whereKey1, isEqualTo: whereValue1).where(whereKey2, isEqualTo: whereValue2);
    if (queryBuilder != null) {
      query = queryBuilder(query);
    }
    final Stream<QuerySnapshot> snapshots = query.snapshots();
    return snapshots.map((snapshot) {
      final result = snapshot.documents
          .map((snapshot) => builder(snapshot.data, snapshot.documentID))
          .where((value) => value != null)
          .toList();
      if (sort != null) {
        result.sort(sort);
      }
      return result;
    });
  }