หากต้องการใช้ Bottom Sheet ให้ใช้คอมโพสิเบิล ModalBottomSheet
คุณสามารถใช้ช่อง content
ซึ่งใช้ ColumnScope
เพื่อวางเลย์เอาต์คอมโพสิชันเนื้อหาชีตในคอลัมน์
ModalBottomSheet(onDismissRequest = { /* Executed when the sheet is dismissed */ }) { // Sheet content }
การขยายและยุบชีตแบบเป็นโปรแกรมทำได้โดยใช้ SheetState
คุณสามารถใช้ rememberSheetState
เพื่อสร้างอินสแตนซ์ของ SheetState
ที่ควรส่งไปยัง ModalBottomSheet
พร้อมพารามิเตอร์ sheetState
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") } } } }