如果您想实现 底部工作表,您可以使用 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") } } } }