Don't dismiss bottom sheets when anchors change

This commit is contained in:
MM20 2023-09-02 18:39:48 +02:00
parent 09e76d3c28
commit a544b85b67
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389

View File

@ -222,14 +222,22 @@ fun BottomSheetDialog(
oldValue == SwipeState.Full && hasPeekAnchor -> SwipeState.Peek
else -> SwipeState.Dismiss
}
val newAnchors = DraggableAnchors {
SwipeState.Dismiss at 0f
if (hasPeekAnchor) SwipeState.Peek at -min(
maxHeightPx * 0.5f,
sheetHeight
)
if (hasFullAnchor) SwipeState.Full at -min(maxHeightPx, sheetHeight)
}
draggableState.updateAnchors(
DraggableAnchors {
SwipeState.Dismiss at 0f
if (hasPeekAnchor) SwipeState.Peek at -min(
maxHeightPx * 0.5f,
sheetHeight
)
if (hasFullAnchor) SwipeState.Full at -min(maxHeightPx, sheetHeight)
newAnchors,
with(draggableState) {
(if (!offset.isNaN()) {
newAnchors.closestAnchor(offset) ?: targetValue
} else targetValue).let {
if (it == SwipeState.Dismiss && targetValue != SwipeState.Dismiss && hasPeekAnchor) SwipeState.Peek else it
}
},
)
if (newValue != oldValue) {