我想更新我的gridview并使用startAfter从Firestore获取数据。 下面是我如何获取第一个数据的代码。 在下一个查询中如何使用startAfter?
Firestore.instance.collection('Posts').limit(6).getDocuments().then((snap){
postList.clear();
for(int i=0; i<snap.documents.length; i++){
Post post = new Post(snap.documents[i]['imageUrl'],
snap.documents[i]['userId'],
snap.documents[i]['color'],
snap.documents[i]['brand'],
snap.documents[i]['sex'],
snap.documents[i]['category']);
postList.add(post);
}
setState(() {
print('Length : $postList.Lenth');
});
});
下一个查询。
Firestore.instance.collection('Posts').startAfter(whats here?).limit(8).getDocuments().then((snap){
for(int i=0; i<snap.documents.length; i++){
Post post = new Post(snap.documents[i]['imageUrl'],
snap.documents[i]['userId'],
snap.documents[i]['color'],
snap.documents[i]['brand'],
snap.documents[i]['sex'],
snap.documents[i]['category']);
postList.add(post);
}
setState(() {
print('Length : $postList.Lenth');
});
});```
答案 0 :(得分:0)
您必须传递最终从Firebase收到的任何值,并且该值必须为唯一。
在您的情况下,您必须传递postList的id参数的最后一个元素。
EX:
postList [postList.length-1] .id
答案 1 :(得分:0)
好的,如果有人遇到这样的问题,那就有解决办法了
_lastDocument = snap.documents[snap.documents.length-1];
.orderBy('dataTime').startAfter([_lastDocument.data['dataTime']])
答案 2 :(得分:0)
如官方视频所示https://www.youtube.com/watch?v=poqTHxtDXwU&t=303s 在 4:20,使用“startAfter”不是一个好主意,因为将 orderBy 设置的值列表作为参数(它有点混乱,并且像视频所说的那样容易出错,请查看文档以获取更多信息)而不是使用 < strong>startAfter Document,您可以在其中放置整个 DocumentSnapshot(您第一次调用的最后一个文档),这样您就有机会获得意想不到的结果并且更容易,这里是文档 startAfterDocument method