Sir*_*lon 25 android android-jetpack-compose jetpack-compose-accompanist
我正在使用 Accompanist 的 JetPack Compose Pager,我想知道如何准确知道我的页面何时显示在屏幕上。就像ViewPager 中的onPageSelected方法一样。
这是我的代码:
HorizontalPager(
state = pagerState,
modifier = Modifier
.fillMaxSize()
.background(MaterialTheme.colors.background)
) { page ->
// This method reinvoked many times.
}
Run Code Online (Sandbox Code Playgroud)
因为目前每个重组都会从 Pager 调用该回调方法。
ysf*_*yln 40
我认为使用会更好
LaunchedEffect(pagerState) {
snapshotFlow { pagerState.currentPage }.collect { page ->
// do your stuff with selected page
}
}
Run Code Online (Sandbox Code Playgroud)
Dag*_*ois 12
要完成@ysfcyln解决方案,请参阅官方文档:
https://google.github.io/accompanist/pager/#reacting-to-page-changes
完整的例子是:
val pagerState = rememberPagerState()
LaunchedEffect(pagerState) {
// Collect from the a snapshotFlow reading the currentPage
snapshotFlow { pagerState.currentPage }.collect { page ->
AnalyticsService.sendPageSelectedEvent(page)
}
}
VerticalPager(
count = 10,
state = pagerState,
) { page ->
Text(text = "Page: $page")
}
Run Code Online (Sandbox Code Playgroud)