Compose — прокручивать VerticalPager вверх, когда прокручивается внешний HorizontalPager

У меня есть VerticalPager внутри HorizontalPager.

Когда я прокручиваю VerticalPager вниз до N-й страницы на 1-й странице HorizontalPager, затем прокручиваю до других страниц в HorizontalPager, затем возвращаюсь на 1-ю страницу HorizontalPager, сохраняется N-я страница, на которую я прокручивал вниз в VerticalPager.

Я хочу, чтобы 1-я страница VerticalPager (а не N-я страница, на которую я прокручивал) всегда открывалась всякий раз, когда прокручивается HorizontalPager.

Как я могу этого добиться?

Мой код:

      val pagerState = rememberPagerState()

HorizontalPager(count = myList.size, state = pagerState) {
    idx ->
    myList[idx].let { cur ->
        val verPagerState = rememberPagerState(initialPage = 0)
        
        VerticalPager(
            count = cur.photos.size,
            state = verPagerState
        ) { page ->

        }
    }
}

1 ответ

Вот как вы можете прокрутить его вручную, когда страница больше не видна.

я используюsnapshotFlow, который создает поток, выдающий значения при изменении состояния, используемого внутри.

      val verPagerState = rememberPagerState(initialPage = 0)
LaunchedEffect(Unit) {
    snapshotFlow {
        !pagerState.isScrollInProgress
                && pagerState.currentPage != idx
                && verPagerState.currentPage != 0
    }.filter { it }
        .collect {
            verPagerState.scrollToPage(0)
        }
}