跳转到内容

WindowDialog

WindowDialog 是一个窗口级对话框组件。它基于平台 Dialog 渲染,无需依赖 ScaffoldMiuixPopupHost。支持大屏优化动效、系统返回手势关闭,以及在内容内部通过组合局部触发关闭。

提示

该组件不依赖 Scaffold,可在任意 Composable 作用域中使用。

引入

kotlin
import top.yukonga.miuix.kmp.extra.WindowDialog
import top.yukonga.miuix.kmp.extra.LocalWindowDialogState

基本用法

kotlin
val showDialog = remember { mutableStateOf(false) }

TextButton(
    text = "打开",
    onClick = { showDialog.value = true }
)

WindowDialog(
    title = "WindowDialog",
    summary = "一个基础的窗口级对话框示例",
    show = showDialog,
    onDismissRequest = { showDialog.value = false }
) {
    val dismiss = LocalWindowDialogState.current
    TextButton(
        text = "确认",
        onClick = { dismiss?.invoke() },
        modifier = Modifier.fillMaxWidth()
    )
}

属性

WindowDialog 属性

属性名类型说明默认值是否必须
showMutableState<Boolean>控制显示状态-
modifierModifier根内容修饰符Modifier
titleString?对话框标题null
titleColorColor标题颜色WindowDialogDefaults.titleColor()
summaryString?对话框摘要null
summaryColorColor摘要颜色WindowDialogDefaults.summaryColor()
backgroundColorColor对话框背景色WindowDialogDefaults.backgroundColor()
onDismissRequest(() -> Unit)?当用户请求关闭(点击遮罩层或返回手势)时触发null
onDismissFinished(() -> Unit)?对话框完全关闭(动画结束)时的回调null
outsideMarginDpSize相对窗口边缘的外部边距WindowDialogDefaults.outsideMargin
insideMarginDpSize对话框内容内部边距WindowDialogDefaults.insideMargin
defaultWindowInsetsPaddingBoolean是否应用默认窗口插入内边距(输入法/导航/标题)true
content@Composable () -> Unit对话框内容-

WindowDialogDefaults

属性

属性名类型说明
outsideMarginDpSize对话框外部默认边距
insideMarginDpSize对话框内部默认边距

函数

函数名返回类型说明
titleColor()Color获取默认标题颜色
summaryColor()Color获取默认摘要颜色
backgroundColor()Color获取默认对话框背景颜色

LocalWindowDialogState

提供一个 () -> Unit 函数,用于从内容内部关闭当前弹窗。

kotlin
val state = LocalWindowDialogState.current
TextButton(
    text = "关闭",
    onClick = { state.invoke() }
)

变更日志

基于 Apache-2.0 许可发布