Compose Bottom Sheet 与 Dialog:模态组件详解

2024-06-11 · 22 min · UI组件

模态组件是移动应用中常见的交互模式,用于展示额外内容或请求用户确认。Compose 提供了丰富的模态组件支持。

一、Modal Bottom Sheet

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun ModalBottomSheetExample() {
    var showSheet by remember { mutableStateOf(false) }
    val sheetState = rememberModalBottomSheetState()
    
    if (showSheet) {
        ModalBottomSheet(
            onDismissRequest = { showSheet = false },
            sheetState = sheetState
        ) {
            // Sheet 内容
        }
    }
}

二、AlertDialog

@Composable
fun BasicAlertDialog() {
    var showDialog by remember { mutableStateOf(false) }
    
    if (showDialog) {
        AlertDialog(
            onDismissRequest = { showDialog = false },
            title = { Text("确认删除") },
            text = { Text("删除后无法恢复,确定要删除吗?") },
            confirmButton = {
                TextButton(onClick = { showDialog = false }) {
                    Text("删除")
                }
            },
            dismissButton = {
                TextButton(onClick = { showDialog = false }) {
                    Text("取消")
                }
            }
        )
    }
}

三、自定义 Dialog

@Composable
fun CustomDialog() {
    Dialog(onDismissRequest = { }) {
        Card(shape = RoundedCornerShape(16.dp)) {
            Column(modifier = Modifier.padding(24.dp)) {
                // 自定义内容
            }
        }
    }
}

四、最佳实践

总结