[New Reader] Avoid initial scroll on reader start
This commit is contained in:
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 }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user