我需要用Firebase构建类似于延迟加载的列表的内容,这意味着我会加载最初的10项或类似内容,每当用户滚动到列表底部时,我就会加载10项以上。
我有两个问题:
我怎么知道用户何时滚动到底部?
如何最有效地更新查询?
我目前这样查询:
List myItems;
BehaviorSubject myItemsSubject = new BehaviorSubject();
int currentlyLoadedItems = 10;
// I call this in my constructor:
loadItems() {
Firestore.instance.collection('MyCollection').orderBy('position', descending: true).limit(currentlyLoadedItems).snapshots().listen((QuerySnapshot snaps) {
myItems = snaps.documents.map((DocumentSnapshot doc) {
return Workout.formDoc(doc);
}).toList();
myItems.add(myItems);
});
}
当用户滚动到底部时,我会这样做:
loadMoreItems() {
currentlyLoadedItems += 10;
loadItems();
}
此解决方案的问题是,我总是需要再次加载已经加载的项目。因为当我加载了前10个项目并致电loadMoreItems()
时,我加载了前20个项目,所以我已经将前10个项目加载了两次。
是否有更好的方法来更新查询?