Сегодня хочу познакомить вас с альтернативой — библиотекой 🐱 Paginator. Это KMP-решение для пагинации, которое решает те самые проблемы, где Paging 3 начинает "буксовать".
Paginator построен на отличной модели от Jetpack Paging 3: страница — это адресуемая ячейка в кэше, кэш — обычная структура данных, а навигация — обычные методы.
1️⃣✅ Адресуемые страницы
Прямые методы
goNextPage(), goPreviousPage() и jump(Bookmark). Deeplink на сообщение из пуша решается одной строкой.2️⃣✅ Мутации по запросу
MutablePaginator предоставляет CRUD-операции: replace { it.id == 42 }, removeWhere { it.deleted }. Один лайк меняет один элемент без инвалидации всей страницы.3️⃣✅ Сохраняемое состояние
Кэш — обычная структура данных, которую можно сериализовать через
kotlinx.serialization. Методы serializeToJson() и restoreFromJson() решают проблему Process Death без плясок с бубном.4️⃣✅ Библиотека, а не фреймворк
Написан на чистом Kotlin без платформенных зависимостей и живёт в
commonMain. Логика пагинации становится частью общего доменного слоя KMP, не копируется между платформами и не имеет двух реализаций.5️⃣✅ Курсорная пагинация "из коробки"
Отдельный класс
CursorPaginator с единой моделью состояний, транзакций и сериализации.Paginator — это не обёртка над Paging 3. Это другая модель, переосмысливающая ключевые типы. Обёртка просто не смогла бы дать ни мутации элемента, ни сериализации кэша.
🔗 Оригинальная статья на Хабре
🐱 Репозиторий Paginator
#Android #AndroidDev #KMP