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 oldValue == SwipeState.Full && hasPeekAnchor -> SwipeState.Peek
else -> SwipeState.Dismiss else -> SwipeState.Dismiss
} }
draggableState.updateAnchors( val newAnchors = DraggableAnchors {
DraggableAnchors {
SwipeState.Dismiss at 0f SwipeState.Dismiss at 0f
if (hasPeekAnchor) SwipeState.Peek at -min( if (hasPeekAnchor) SwipeState.Peek at -min(
maxHeightPx * 0.5f, maxHeightPx * 0.5f,
sheetHeight sheetHeight
) )
if (hasFullAnchor) SwipeState.Full at -min(maxHeightPx, sheetHeight) if (hasFullAnchor) SwipeState.Full at -min(maxHeightPx, sheetHeight)
}
draggableState.updateAnchors(
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) { if (newValue != oldValue) {