Jetpack Compose Pager - отложенная загрузка страницы

у меня есть ( ) с двумя страницами, каждая из которых содержит список элементов. У каждого элемента есть анимация ввода, которая срабатывает при первой композиции. При составлении пейджера обе страницы также создаются одновременно, но, как ни странно, не всегда.

Я храню внутри моей модели представления по другим причинам, поэтому последняя активная вкладка сохраняется. Если это первая страница, обе страницы составляются одновременно, что вызывает всплеск на графике времени кадра. Однако, если это вторая страница, только она составляется со своим списком, и первая страница заполняется в тот момент, когда я прокручиваю в ее направлении. Это удобно!

Вот псевдокод для лучшего понимания.

      @Composable
fun PagerScreen(viewModel: SomeViewModel) {
    val firstList by viewModel.firstListFlow.collectAsState()
    val secondList by viewModel.secondListFlow.collectAsState()

    HorizontalPager(
        state = viewModel.pagerState
        /* ... */
    ) { index ->
        // "Switch-case"ing tabs by index and displaying a LazyColumn for each.
    }
}

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

Итак, вопрос в том, как заставить страницы пейджера составляться лениво, несмотря ни на что?

Возможно, если мы соберем , но для этого требуется нетривиальная логика, и я бы хотел избежать этого, поскольку такое поведение уже существует.

0 ответов

Другие вопросы по тегам