Skip to content

SideSheetState

SideSheetState

@Stable
class SideSheetState(
initialValue: SideSheetValue = SideSheetValue.Hidden,
density: Density,
confirmValueChange: (SideSheetValue) -> Boolean = { true },
)

Properties

PropertyTypeDescription
currentValueSideSheetValueCurrent sheet state (Hidden or Expanded)
targetValueSideSheetValueTarget state during animation
isVisibleBooleantrue when currentValue is Expanded
offsetFloatCurrent drag offset in pixels

Functions

FunctionDescription
suspend expand()Animate to Expanded state
suspend hide()Animate to Hidden state

rememberSideSheetState

@Composable
fun rememberSideSheetState(
initialValue: SideSheetValue = SideSheetValue.Hidden,
confirmValueChange: (SideSheetValue) -> Boolean = { true },
): SideSheetState

Returns a SideSheetState that survives recomposition and configuration changes via rememberSaveable.

Confirm Value Change

Use confirmValueChange to intercept state transitions:

val sheetState = rememberSideSheetState(
confirmValueChange = { newValue ->
if (newValue == SideSheetValue.Hidden && hasUnsavedChanges) {
// Prevent dismiss when there are unsaved changes
false
} else {
true
}
}
)

SideSheetValue

enum class SideSheetValue {
Hidden,
Expanded,
}

SideSheetEdge

enum class SideSheetEdge {
Start,
End,
}