diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/ReaderScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/ReaderScreen.kt index 17a86017e..27d2272f2 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/ReaderScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/ReaderScreen.kt @@ -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) } diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/SliderPagerDoubleSync.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/SliderPagerDoubleSync.kt index 283450433..322a19128 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/SliderPagerDoubleSync.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/SliderPagerDoubleSync.kt @@ -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 } } }