yschimke
12/08/2021, 10:40 AMyschimke
12/08/2021, 10:41 AMyschimke
12/08/2021, 10:41 AMyschimke
12/08/2021, 2:21 PMfun RotaryEventState(scrollState: ScrollableState?) {
val dispatcher = LocalRotaryEventDispatcher.current
SideEffect {
dispatcher.scrollState = scrollState
}
}
John Nichol
12/08/2021, 7:10 PMbarat
12/09/2021, 5:56 AMsaryong
12/09/2021, 6:26 AMDisposableEffect
like you said. 🙂yschimke
12/09/2021, 9:02 AMallprojects {
configurations.all {
resolutionStrategy.eachDependency {
if (requested.group.startsWith("androidx.compose.") && requested.version == "1.1.0-beta04") {
useVersion("1.1.0-beta03")
because("fixes scrolling bug")
}
}
}
}
barat
12/10/2021, 6:00 AMyschimke
12/13/2021, 4:33 PMLaunchedEffect(key1 = pagerState.currentPage) {
when (pagerState.currentPage) {
0 -> rotaryEventDispatcher.scrollState = volumeScrollableState
1 -> rotaryEventDispatcher.scrollState = libraryScrollState
}
}
yschimke
12/19/2021, 11:32 AMyschimke
12/19/2021, 11:32 AMScalingLazyColumn(
modifier = modifier.scrollHandler(scrollState),
yschimke
12/19/2021, 11:35 AM@OptIn(ExperimentalComposeUiApi::class)
fun Modifier.scrollHandler(scrollState: ScrollableState): Modifier = composed {
val context = LocalContext.current
val scope = rememberCoroutineScope()
val scaledVerticalScrollFactor =
remember { ViewConfiguration.get(context).getScaledVerticalScrollFactor() }
this.pointerInteropFilter(RequestDisallowInterceptTouchEvent()) { event ->
if (event.action != MotionEvent.ACTION_SCROLL ||
!event.isFromSource(InputDeviceCompat.SOURCE_ROTARY_ENCODER)
) {
false
} else {
val delta = -event.getAxisValue(MotionEventCompat.AXIS_SCROLL) *
scaledVerticalScrollFactor
scope.launch {
scrollState.scrollBy(delta)
}
true
}
}
}
barat
01/14/2022, 7:38 AM