Modal bottom sheets present a set of choices while blocking interaction with the rest of the screen.
ModalBottomSheetSample
@Composable
@OptIn(ExperimentalMaterialApi::class)
fun ModalBottomSheetSample() {
var skipHalfExpanded by remember { mutableStateOf(false) }
val state =
rememberModalBottomSheetState(
initialValue = ModalBottomSheetValue.Hidden,
skipHalfExpanded = skipHalfExpanded,
)
val scope = rememberCoroutineScope()
ModalBottomSheetLayout(
sheetState = state,
sheetContent = {
LazyColumn {
items(50) {
ListItem(
text = { Text("Item $it") },
icon = {
Icon(
Icons.Default.Favorite,
contentDescription = "Localized description",
)
},
)
}
}
},
) {
Column(
modifier = Modifier.fillMaxSize().padding(16.dp),
horizontalAlignment = Alignment.CenterHorizontally,
) {
Row(
Modifier.toggleable(
value = skipHalfExpanded,
role = Role.Checkbox,
onValueChange = { checked -> skipHalfExpanded = checked },
)
) {
Checkbox(checked = skipHalfExpanded, onCheckedChange = null)
Spacer(Modifier.width(16.dp))
Text("Skip Half Expanded State")
}
Spacer(Modifier.height(20.dp))
Button(onClick = { scope.launch { state.show() } }) { Text("Click to show sheet") }
}
}
}