Перейти к основному содержимому

Пагинация с бесконечной прокруткой в ListView

Если ListView с включённой Infinite Scroll загружает все элементы сразу вместо пагинации, проблема обычно связана с конфигурацией макета. Это руководство описывает, как правильно структурировать виджет для корректного поведения пагинации.

Предварительные требования
  • Infinite Scroll включена в ListView.
  • Виджет размещён внутри макета, который позволяет учитывать ограничения по высоте.

Следуйте шагам ниже, чтобы настроить ListView для пагинации:

  1. Убедитесь, что ListView имеет определённую высоту
    ListView должен иметь ограничение по высоте, чтобы определить размер области просмотра и правильно пагинировать. Без определённой высоты он попытается загрузить все элементы.

  2. Позвольте ListView управлять собственной прокруткой

    • Отключите прокрутку в любом родительском Column или прокручиваемом контейнере.

    • Включите опцию Primary и оберните ListView в виджет Expanded.

    • Это позволяет ListView контролировать поведение прокрутки и рассчитывать элементы для загрузки на страницу.

  3. Оберните ListView в контейнер с фиксированной высотой (если вложенный)
    Если ListView находится внутри прокручиваемого родителя (например, Column или ListView), оберните его в Container с определённой высотой (например, 500px). Это гарантирует, что он не расширяется бесконечно.

  4. Избегайте отсутствующих ограничений по высоте
    Без ограничений ListView не узнает видимый размер и загрузит все данные сразу, обходя пагинацию.

    warning

    Размещение ListView непосредственно внутри прокручиваемого родителя без определённой высоты нарушит поведение Infinite Scroll.

  5. Используйте структуру макета, поддерживающую изоляцию прокрутки
    Позвольте ListView прокручиваться независимо, прежде чем прокрутка родителя возьмёт верх. Комбинируйте это с определённой высотой и использованием Expanded для наилучших результатов.

подсказка

Чтобы оптимизировать пагинацию, определите последовательные высоты элементов и протестируйте с различными размерами экрана.

Дополнительные ресурсы