记住 LazyColumn 滚动位置 - Jetpack Compose

时间:2021-08-01 14:20:24

标签: android kotlin android-jetpack-compose

当我从一个可组合屏幕导航到另一个屏幕时,我试图保存/记住 LazyColumn 滚动位置。即使我将 rememberLazyListState 传递给 LazyColumn,在我回到第一个可组合屏幕后,滚动位置也不会保存。有人可以帮我吗?

@ExperimentalMaterialApi
@Composable
fun DisplayTasks(
    tasks: List<Task>,
    navigateToTaskScreen: (Int) -> Unit
) {
    val listState = rememberLazyListState()

    LazyColumn(state = listState) {
        itemsIndexed(
            items = tasks,
            key = { _, task ->
                task.id
            }
        ) { _, task ->
            LazyColumnItem(
                toDoTask = task,
                navigateToTaskScreen = navigateToTaskScreen
            )
        }
    }
}

1 个答案:

答案 0 :(得分:1)

好吧,如果您真的想保存它,您必须将它存储为类似视图模型的东西,它仍然保留下来。 remembered 的东西只持续到可组合没有被销毁。如果你导航到另一个屏幕,之前的 Composables 会被销毁,同时滚动状态也会被销毁