Firebase的延迟加载列表

时间:2019-03-16 20:40:11

标签: firebase flutter google-cloud-firestore

我需要用Firebase构建类似于延迟加载的列表的内容,这意味着我会加载最初的10项或类似内容,每当用户滚动到列表底部时,我就会加载10项以上。

我有两个问题:

  1. 我怎么知道用户何时滚动到底部?

  2. 如何最有效地更新查询?

我目前这样查询:

  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个项目加载了两次。

是否有更好的方法来更新查询?

0 个答案:

没有答案