Flutter & Firestore - проблема с разбиением на страницы "startAfter" - PullRequest
0 голосов
/ 27 ноября 2018

Я могу использовать «startAfter» и «limit» для разбивки на страницы, но в нем есть ошибка.

Например, в БД Firestore у меня есть 7 записей:

{"title": "item1", "create_datetime": "2018-11-11 11:11:11"}
{"title": "item2", "create_datetime": "2018-11-11 11:11:11"}
{"title": "item3", "create_datetime": "2018-11-11 11:11:11"}
{"title": "item4", "create_datetime": "2018-11-11 11:11:11"}
{"title": "item5", "create_datetime": "2018-11-11 11:11:11"}
{"title": "item6", "create_datetime": "2018-11-11 11:11:11"}
{"title": "item7", "create_datetime": "2018-12-22 22:22:22"}

Когдаразмер страницы 5, первая страница в порядке, потому что я использовал:

.orderBy('create_datetime').limit(5)

Это дает мне пункт 1-5.

Когда он загружал вторую страницу, я использовал:

.orderBy('create_datetime').startAfter(['2018-11-11 11:11:11']).limit(5)

Проблема в том, что на второй странице результата был только пункт7, пункт6 исчез.У «startAt» такая же проблема.

Я действительно надеюсь, что у него есть функция «смещения».У кого-нибудь есть решение?

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

В настоящее время флаттер не поддерживает startAfter(lastDocFetched) или startAt(anyDoc).Это необходимо, поскольку вы сказали, что оно начинается со значений, совпадающих со строкой, а не с конкретного документа.

0 голосов
/ 03 декабря 2018

Ваш запрос всегда будет возвращать 'item7', потому что вы всегда начинаете после 2018-11-11 11:11:11, поэтому он игнорирует все остальные элементы и переходит к последнему 2018-11-11 11:11:11 и пропускает оттуда.Вам нужно получить последний возвращенный элемент и сохранить ссылку на него, а затем на стартовом. Использовать ссылку на документ для запуска после.Обычно startAfter flutter требует, чтобы список содержал ссылку на него.

Посмотрите на Курсоры запросов Firebase

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...