Estoy usando la biblioteca Paging 3 con Lazy Column y un menú de navegación inferior en mi actividad. Cada pantalla componible adjunta a BottomNavMenu usa un componible que a su vez usa columnas diferidas. Cuando navego entre Composables usando la biblioteca de navegación de composición, quiero que el componible recompuesto conserve la posición de desplazamiento y el lazyListState
He intentado lo siguiente pero no funciona:
val listState = rememberLazyListState() val scrollState = rememberScrollState() LazyColumn( modifier = Modifier .fillMaxSize() .padding(bottom = 56.dp) .scrollable(scrollState, Orientation.Vertical), state = listState, ) { //draw the items and hook the loadState to the lazy paging itemsCada vez que navego a este componible, se recompone con la posición de desplazamiento establecida en 0, que no es lo que quiero. ¿Cuál es la forma correcta de manejar esto?
Probablemente necesite hacer collectAsLazyPagingItems() antes de declarar su NavHost
Presenté un error sobre esto, puede leerlo para obtener más detalles y destacarlo para seguir el problema: https://issuetracker.google.com/issues/177245496
Parece que esto es un error en el componente Compose Navigation.
rememberLazyListState() no funciona correctamente en los cambios de configuración (rotación de pantalla, cambio de tema oscuro, etc.) para componibles dentro de un NavHost .
Puede almacenar en caché los datos de paginación en un modelo de vista y luego recopilarlos en la interfaz de usuario. La parte de ViewModel puede verse así:
val items: Flow<PagingData<YourItem>> = Pager(PagingConfig(PAGE_SIZE)) { YourSource() } .flow .cachedIn(viewModelScope)Y luego puede usarlo en la interfaz de usuario de esta manera:
@Composable fun YourScreen(viewModel: YourViewModel) { val items = viewModel.items.collectAsLazyPagingItems() ... }