Si quieres implementar una hoja inferior, puedes usar el elemento componible ModalBottomSheet
.
Puedes usar el espacio content
, que usa un ColumnScope
para diseñar elementos componibles de contenido de hojas en una columna:
ModalBottomSheet(onDismissRequest = { /* Executed when the sheet is dismissed */ }) { // Sheet content }
La expansión y contracción de la hoja de forma programática se realiza a través de SheetState
. Puedes usar rememberSheetState
para crear una instancia de SheetState
que se debe pasar a ModalBottomSheet
con el parámetro sheetState
. SheetState
proporciona acceso a las funciones show
y hide
, así como a propiedades relacionadas con el estado actual de la hoja. Estas funciones de suspensión requieren un CoroutineScope
(por ejemplo, mediante rememberCoroutineScope
), y se lo puede llamar en respuesta a eventos de IU. Asegúrate de quitar el ModalBottomSheet
de la composición cuando ocultes la hoja inferior.
val sheetState = rememberModalBottomSheetState() val scope = rememberCoroutineScope() var showBottomSheet by remember { mutableStateOf(false) } Scaffold( floatingActionButton = { ExtendedFloatingActionButton( text = { Text("Show bottom sheet") }, icon = { Icon(Icons.Filled.Add, contentDescription = "") }, onClick = { showBottomSheet = true } ) } ) { contentPadding -> // Screen content if (showBottomSheet) { ModalBottomSheet( onDismissRequest = { showBottomSheet = false }, sheetState = sheetState ) { // Sheet content Button(onClick = { scope.launch { sheetState.hide() }.invokeOnCompletion { if (!sheetState.isVisible) { showBottomSheet = false } } }) { Text("Hide bottom sheet") } } } }