// В ViewModel
val pager = Pager(pagingConfig, pagingSourceFactory)
val pagerFlow: Flow<ItemSnapshotList> = pager.flow.asState()
// Пример в Compose
val snapshotFlow = viewModel.pagerFlow.collectAsStateWithLifecycle(initialList)
val snapshot = itemsFlow.value
LazyColumn {
items(items = snapshot.items) { ... }
}
Также появилась возможность явно вызвать загрузку новых страниц через методы append() и prepend(), а также refresh() и retry()
LazyColumn {
item {
LaunchedEffect(viewModel) { viewModel.prepend() }
}
items(snapshot.items) { item -> Text("Item: $item") }
item {
LaunchedEffect(viewModel) { viewModel.append() }
}
}Кажется, что сделали жизнь проще, но мой опыт с Paging всегда упирался в проблемы кэширования и удобной работы в Data слое. Всегда считал эту библиотеку архитектурно неудачной и ждал когда же ее переделают полностью.
#Android #Jetpack #AndroidDev