有没有办法保存可组合的 UI 状态,以便在可组合之间切换时,它们的 UI 状态与离开视图时的状态相同?
我已经尝试使用 rememberLazyListState()
(它使用 rememberSaveable
)来保存 LazyColumn
的滚动状态,但是当返回到 Composable 时它似乎不起作用。< /p>
有什么想法吗?
编辑:我使用 NavController
来处理 Composable 之间的导航
答案 0 :(得分:0)
我刚刚想出了怎么做。这个想法是将 LazyListState
提升到管理视图导航的可组合。
@Composable
fun AppScreenNav(screen: Screen) {
val listState = rememberLazyListState()
when (screen) {
Screen.Home -> Home()
Screen.Favorites -> Favorites(listState)
}
}
@Composable
fun Favorites(listState: LazyListState) {
val favorites: List<String> by rememberSaveable { mutableStateOf(List(1000) { "Favorites $it" }) }
LazyColumn(
state = listState
) {
items(favorites) { item ->
Text(
color = Color.Black,
text = item,
)
}
}
}
这里我们将列表状态提升到父组件。在 Home()
和 Favorites()
可组合之间切换时,列表滚动状态应保持相同。