我设置了导航、分页并使用流程将 ui 与模型连接起来。如果简化的话,我的屏幕代码如下所示:
@Composable
MainScreen() {
val listState = rememberLazyListState()
val lazyItems = Pager(PagingConfig(...)) { ... }
.flow
.cachedIn(viewModelScope)
.collectAsLazyPagingItems()
LazyColumn(state = listState) {
items(lazyItems, key = { it.id }) { ... }
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的 NavHost 代码:
NavHost(navController, startDestination = "mainScreen") {
composable("mainScreen") {
MainScreen()
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我从另一个屏幕导航回主屏幕或只是打开抽屉时,数据会再次从数据源加载,并且我会看到明显的闪烁LazyColumn。
如何避免重新加载数据?