Обновление Paginator с 3.x до 8.x
Эта статья — про то, что реально изменилось, и в каком порядке я бы рекомендовал это трогать. Основано на диффе между (3.3.0) и (8.6.2).
Обновление Paginator с 3.x до 8.x
Эта статья — про то, что реально изменилось, и в каком порядке я бы рекомендовал это трогать. Основано на диффе между (3.3.0) и (8.6.2).
Paging 3 хорош. Пока вам не понадобится что-то ещё
Если коротко: пагинация — это когда вы не грузите 100 000 товаров из каталога одним запросом, а показываете их страницами по 20–50 штук и подгружаете следующую порцию, когда пользователь домотал до конца. Звучит как задача на полдня. На практике — по-разному. Я пишу мобильные приложения уже давно, и каждый раз, когда в новом проекте появлялась пагинация, рядом с ней через месяц-другой появлялся один и тот же набор багов и ad-hoc-решений. Флаги isLoadingNextPage , isLoadingPrevious , isRefreshing , isEmpty , hasError , hasNextPage . Попытки «просто заменить элемент без перезагрузки страницы». Восстановление позиции после убийства процесса. Прыжок на конкретную страницу по deeplink. На Android есть Jetpack Paging 3, и его берут по умолчанию. Но как только вы выходите за рамки «загрузи следующие 20 элементов на скролле вниз» — начинается интересное. А если ваш проект — Kotlin Multiplatform, то Paging 3 вообще не ваш вариант: это Android-библиотека, она не едет на iOS. Я расскажу про опенсорсную библиотеку Paginator , которую делаю последние несколько лет. Она работает одинаково на Android, JVM и iOS из одного commonMain , закрывает сложные сценарии из коробки — и даже на самой обычной ленте настраивается короче, чем Paging 3. Это не поход против Paging 3 и не попытка что-то кому-то доказать. Это просто описание того, что есть другой инструмент, и он делает то же самое компактнее.
https://habr.com/ru/articles/1027320/
#paging #paging_library #paging3 #paginator #kmp #android #kotlin