Refre sh для загрузки новых данных и прокрутки для разбивки данных на страницы Flutter Firestore - PullRequest
0 голосов
/ 14 июля 2020

У меня есть коллекция Firestore под названием «Feeds», которая содержит список сообщений для данного канала пользователя (например, Instagram). Когда представление загружается, я вызываю будущее и упорядочиваю по времени

var userPostsDocumentSnapshot = await _feeds
          .document(userUid)
          .collection(items)
          .orderBy('postDateTime', descending: true)
          .getDocuments();

Сначала я использовал поток, но когда новые данные добавляются в канал пользователя, я не хочу, чтобы он отображался автоматически, Мне нужен раскрывающийся список для загрузки новых данных. Однако я также хочу сделать его более эффективным, разбивая данные на страницы при прокрутке вниз (от самых новых к самым старым), чтобы сделать их немного более эффективными. Как я могу добиться как раскрытия для загрузки новых данных, так и разбивки данных на страницы при прокрутке?

1 Ответ

1 голос
/ 14 июля 2020

Для раскрывающегося меню загрузки вы просто захотите снова выполнить свой запрос.

Для разбивки на страницы я использовал курсор , как описано здесь . Например, в зависимости от того, как вы работаете с пользовательским интерфейсом, вы можете ограничить свой запрос определенным количеством документов.

Итак, для вашего запроса может работать что-то вроде этого:

var userPostsDocumentSnapshot = _feeds
          .document(userUid)
          .collection(items)
          .orderBy('postDateTime', descending: true)
          .limit(10);

Затем, когда вы фактически захватываете документы, сохраните ссылку на последний:

var docsnaps = await userPostsDocumentSnapshot.getDocuments();
var last = docsnaps.docs[documentSnapshots.docs.length-1];

Затем, когда вы разбиваете на страницы, используйте небольшой вариант вашего запроса:

      ...  _feeds
          .document(userUid)
          .collection(items)
          .orderBy('postDateTime', descending: true)
          .startAfter(last);
...