【发布时间】:2021-05-30 18:51:40
【问题描述】:
我有 LazyColumn,其中包含我从 viewmodel 收集的数据。问题是当我更改屏幕方向或导航到另一个可组合并返回时,我的可组合无法保存滚动状态。我不确定我是否正确使用了 rememberLazyListState。感谢任何帮助。
@Composable
fun UsersScreen(mainNavController: NavHostController, viewModel: UsersViewModel = hiltViewModel()) {
val users = viewModel.users.collectAsState(listOf()).value
val lazyListState = rememberLazyListState()
Users(users, lazyListState, mainNavController)
}
@Composable
fun Users(list: List<UserEntity>, listState: LazyListState, mainNavController: NavHostController) {
LazyColumn(state = listState, modifier = Modifier.fillMaxSize()) {
items(list) { user ->
UserCard(user) {
mainNavController.navigate("$USER_DETAIL/${user.fullName}")
}
}
}
}
【问题讨论】:
-
您在使用 Compose
beta07吗?这是b/188567661 中的一个已知问题,已针对 beta08 修复。 -
是的,我使用的是 beta07 版本。由于 beta08 尚未发布,我尝试将其降级,但它给了我 IllegalStateException。看起来我必须等待,比很多。
-
虽然如果您的列表由于方向更改而重新组合,这已修复,但如果列表使用 AnimatedVisibility 在屏幕外设置动画,这仍然是一个错误。它将跳转到列表的开头。
标签: android android-jetpack android-jetpack-compose