如果您想实现一个底部表单,您可以使用 ModalBottomSheet
可组合项。
您可以使用 content
插槽,它使用 ColumnScope
以列的形式布局表单内容可组合项
ModalBottomSheet(onDismissRequest = { /* Executed when the sheet is dismissed */ }) { // Sheet content }
使用 SheetState
以编程方式展开和折叠表单。您可以使用 rememberSheetState
创建一个 SheetState
实例,该实例应使用 sheetState
参数传递给 ModalBottomSheet
。 SheetState
提供对 show
和 hide
函数的访问,以及与当前表单状态相关的属性。这些挂起函数需要一个 CoroutineScope
(例如,使用 rememberCoroutineScope
),并且可以在响应 UI 事件时调用。确保在隐藏底部表单时从组合中移除 ModalBottomSheet
。
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") } } } }