因此,我正在使用Firebase从Firestore检索数据,并且工作正常,但是现在为了节省金钱和资源,我使用了40个项目的限制,因此只有40个项目来自Firebase,但是现在用户到达列表的末尾,我希望用户能够从Firebase数据库中获取接下来的40个项目。那就是我不知道该怎么做。要获取接下来的40个项目,而不必从firebase中读取整个80个项目。
这是我的代码:
getCountryItems() async{
QuerySnapshot snapshot = await userCountry
.orderBy('timeStamp', descending: true)
.limit(40) //getting only 40 items
//.orderBy('likesCount', descending: true)
.getDocuments();
List<Items> countryPosts = snapshot.documents.map((doc) => Items.fromDocument(doc)).toList();
setState(() {
this.countryPosts = countryPosts;
});
}
这就是现在获取前40个项目的原因,我想仅在按下按钮之后才能获取40个项目:
FlatButton(
onPressed: (){}//funtion to get the next 40 items
);
答案 0 :(得分:1)
参考:https://firebase.google.com/docs/firestore/query-data/query-cursors
使用startAfter将光标移到所需位置
getCountryItems(paginateAt = 0) async{
QuerySnapshot snapshot = await userCountry
.orderBy('timeStamp', descending: true)
.startAfter(paginateAt)
.limit(40) //getting only 40 items
//.orderBy('likesCount', descending: true)
.getDocuments();
List<Items> countryPosts = snapshot.documents.map((doc) => Items.fromDocument(doc)).toList();
setState(() {
this.countryPosts = countryPosts;
});
}
FlatButton(
onPressed: (){
getCountryItems(this.countryPosts.last)
}//funtion to get the next 40 items
);