Flutter flatterfirestore查询

Flutter flatterfirestore查询,flutter,Flutter,请告诉我,我有20份来自Firestore的文档,但我想显示至少7份,并使用“全部查看”按钮,这样当用户单击它时,它将显示所有产品。请给出提示或代码,说明我如何实现这一点。。如下图所示。谢谢 getProducts(ProductNotifier productNotifier)async{ int perPage = 7; QuerySnapshot snapshot = await Firestore.instance .collection("Products").li

请告诉我,我有20份来自Firestore的文档,但我想显示至少7份,并使用“全部查看”按钮,这样当用户单击它时,它将显示所有产品。请给出提示或代码,说明我如何实现这一点。。如下图所示。谢谢

getProducts(ProductNotifier productNotifier)async{
  int perPage = 7;
  QuerySnapshot snapshot = await Firestore.instance
      .collection("Products").limit(perPage)
      .getDocuments();

  List<Product> _productList = [];

  snapshot.documents.forEach((document){
    Product product = Product.fromMap(document.data);
    _productList.add(product);

  });

  productNotifier.productList = _productList;
}
getProducts(ProductNotifier ProductNotifier)异步{
每页整数=7;
QuerySnapshot快照=等待Firestore.instance
.收集(“产品”).限额(每页)
.getDocuments();
列表_productList=[];
snapshot.documents.forEach((文档){
Product Product=Product.fromMap(document.data);
_productList.add(产品);
});
productNotifier.productList=\u productList;
}
然后在查看所有页面上,我使用了这个查询,但是我必须使用getProduct而不是getProducts来无限制地查询它

getProduct(ProductNotifier productNotifier)async{
      QuerySnapshot snapshot = await Firestore.instance
          .collection("Products")
          .getDocuments();

      List<Product> _productList = [];

      snapshot.documents.forEach((document){
        Product product = Product.fromMap(document.data);
        _productList.add(product);

      });

      productNotifier.productList = _productList;
    }
getProduct(ProductNotifier ProductNotifier)异步{
QuerySnapshot快照=等待Firestore.instance
.收集(“产品”)
.getDocuments();
列表_productList=[];
snapshot.documents.forEach((文档){
Product Product=Product.fromMap(document.data);
_productList.add(产品);
});
productNotifier.productList=\u productList;
}

您必须在firestore查询中使用limit。 要查看所有文档,请无限制地使用下面的查询

int perPage = 7; //your document size
Query query = Firestore.instance
        .collection('your_collection').limit(perPage);

您必须为预览执行水平滚动列表视图

        Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            mainAxisSize: MainAxisSize.min,
            mainAxisAlignment: MainAxisAlignment.start,
            children: <Widget>[

              SizedBox(
                height: 200,
                child: ListView(

                  scrollDirection: Axis.horizontal,
                  shrinkWrap: true,
                  physics: ClampingScrollPhysics(),

                  children: snapshot.data.documents.map((DocumentSnapshot document) {

                    YourObject object = getObject(document);

                    return Container(child : yourWidget);
                  }).toList(),
                )
                ,
              )
              ,
            ],
          )
列(
crossAxisAlignment:crossAxisAlignment.start,
mainAxisSize:mainAxisSize.min,
mainAxisAlignment:mainAxisAlignment.start,
儿童:[
大小盒子(
身高:200,
子:ListView(
滚动方向:轴水平,
收缩膜:对,
物理:ClampingScrollPhysics(),
子项:snapshot.data.documents.map((DocumentSnapshot文档){
YourObject=getObject(文档);
返回容器(子:yourWidget);
}).toList(),
)
,
)
,
],
)

我在构建小部件中创建了一个变量,用于循环加载每页所需的数量,并使用“全部查看”按钮检索全部

Widget build(BuildContext context) {
    int perPage = 7;
    for(int x = perPage; x < productNotifier.productList.length; x++) {
      return ListView.builder(
        scrollDirection: Axis.horizontal,
        itemCount: perPage,
        itemBuilder: (BuildContext context, int index) {
          return Container()
          // ui code goes here
     }
   );
  }
}
小部件构建(构建上下文){
每页整数=7;
for(int x=perPage;x
谢谢……我正在尝试实现它,但没有以正确的方式实现。我使用int perPage=7;然后我使用QuerySnapshot snapshot=Firestore.instance.collection(“产品”).limit(perPage).getDocuments。它加载了7行,当我按下全部查看并将该页面上的firestore查询更改为QuerySnapshot snapshot=firestore.instance.collection(“products”).getDocuments时。它也会加载所有的20个文档,但当我导航回主屏幕时,它会加载所有的20个文档,而不是只加载7个文档,直到我刷新页面后才返回到7。。我已经用代码编辑了这个问题。我正在使用提供商软件包。谢谢