[New Reader] Avoid initial scroll on reader start

This commit is contained in:
FooIbar committed 2024-07-28 17:14:07 +08:00
1 parent fd6c2977b0
commit 01a1113a07
2 files changed
+6 -4

No files matched your search

@@ -144,8 +144,8 @@ fun ReaderScreen(pageLoader: PageLoader2, info: BaseGalleryInfo?, navigator: Des
uiController.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_DEFAULT
}
}
val lazyListState = rememberLazyListState()
val pagerState = rememberPagerState { pageLoader.size }
val lazyListState = rememberLazyListState(pageLoader.startPage)
val pagerState = rememberPagerState(pageLoader.startPage) { pageLoader.size }
val syncState = rememberSliderPagerDoubleSyncState(lazyListState, pagerState, pageLoader)
Box {
var appbarVisible by remember { mutableStateOf(false) }
@@ -22,7 +22,7 @@ class SliderPagerDoubleSync(
private val pagerState: PagerState,
private val pageLoader: PageLoader2,
) {
private var sliderFollowPager by mutableStateOf(false)
private var sliderFollowPager by mutableStateOf(true)
var sliderValue by mutableIntStateOf(pageLoader.startPage + 1)
private set
@@ -37,8 +37,9 @@ class SliderPagerDoubleSync(
val pagerFling by pagerState.interactionSource.collectIsDraggedAsState()
if (fling || pagerFling) sliderFollowPager = true
val currentIndexFlow = remember(webtoon) {
sliderFollowPager = false
val initialIndex = sliderValue - 1
if (webtoon) {
sliderFollowPager = lazyListState.firstVisibleItemIndex == initialIndex
snapshotFlow {
with(lazyListState.layoutInfo) {
visibleItemsInfo.lastOrNull {
@@ -47,6 +48,7 @@ class SliderPagerDoubleSync(
}
}.filterNotNull()
} else {
sliderFollowPager = pagerState.currentPage == initialIndex
snapshotFlow { pagerState.currentPage }
}
}