Improve swipe gesture cancellation in pager layout

This commit is contained in:
MM20 2023-02-26 13:40:02 +01:00
parent 348c969c19
commit b01eb151f8
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389
2 changed files with 9 additions and 1 deletions

View File

@ -8,7 +8,7 @@ import androidx.compose.ui.geometry.Offset
class GestureDetector {
private var dragStart: Offset? = null
private var currentDrag : Offset? = null
var currentDrag : Offset? = null
var gestureListener: OnGestureListener? = null

View File

@ -259,6 +259,14 @@ fun PagerScaffold(
val nestedScrollConnection = remember {
object : NestedScrollConnection {
override fun onPreScroll(available: Offset, source: NestedScrollSource): Offset {
val drag = gestureManager.currentDrag
if (drag != null && (drag.y > 0 || (reverse && drag.x < 0 || !reverse && drag.x > 0))) {
gestureManager.dispatchDrag(available)
return available
}
return super.onPreScroll(available, source)
}
override fun onPostScroll(
consumed: Offset,
available: Offset,