Запомните положение прокрутки LazyColumn — Составьте Jetpack

#android #kotlin #android-jetpack-compose

Вопрос:

Я пытаюсь сохранить/запомнить положение прокрутки LazyColumn при переходе от одного составного экрана к другому. Даже если я передам состояние rememberlazylist в столбец 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:

Ну, если вы буквально хотите сохранить его, вы должны сохранить его в чем-то вроде модели представления, где он сохраняется. Материал remember ed длится только до тех пор, пока композитный материал не будет уничтожен. Если вы перейдете на другой экран, предыдущие составные элементы будут уничтожены, а вместе с ними и состояние прокрутки

Комментарии:

1. Есть ли способ использовать rememberSaveable с этим состоянием LazyList?

2. rememberSaveable работает так же , как rememer и, с той лишь разницей, что он сохраняет состояние при изменении конфигурации. Вращение устройства, для непрофессионала.