Utkarsh Tiwari
09/10/2023, 1:05 PMUtkarsh Tiwari
09/10/2023, 1:23 PM@OptIn(ExperimentalSnapperApi::class)
@Composable
fun flingBehavior(
pagerState: PagerState,
noOfPages: Int,
minFlingDistanceDp: Dp
): FlingBehavior {
var currentPageIndex by rememberSaveable { mutableStateOf(pagerState.currentPage) }
return PagerDefaults.flingBehavior(
state = pagerState,
snapIndex = { layoutInfo, _, _ ->
val distanceToStartSnap = layoutInfo.distanceToIndexSnap(currentPageIndex)
currentPageIndex = when {
distanceToStartSnap < -(minFlingDistanceDp.value) -> {
(currentPageIndex + 1).coerceAtMost(noOfPages - 1)
}
distanceToStartSnap > minFlingDistanceDp.value -> {
(currentPageIndex - 1).coerceAtLeast(0)
}
else -> {
currentPageIndex
}
}
currentPageIndex
}
)
}
Utkarsh Tiwari
09/10/2023, 1:23 PMminFlingDistanceDp
which I set to 5.dp for high sentivity.