You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Compose中使用Material3自定义圆角选项AlertDialog遇类型错误

解决Material3 AlertDialog类型不匹配错误(Compose BOM 2022.11.00)

问题概述

尝试构建带选项选择的圆角AlertDialog时,使用参考代码出现类型不匹配错误:

Type mismatch.
Required:
DialogProperties
Found:
() → Unit

原代码如下:

@Composable
fun DialogOptionsView() {
    AlertDialog(
        onDismissRequest = {}
    ) {
        Surface(
            modifier = Modifier
                .wrapContentWidth()
                .wrapContentHeight(),
            shape = MaterialTheme.shapes.large
        ) {

        }
    }
}

错误原因

你使用的Compose BOM 2022.11.00对应的Material3库中,AlertDialog的参数顺序已调整:旧版代码中onDismissRequest是第一个参数,但新版本中properties参数被移至首位,直接传入onDismissRequest会导致类型不匹配。

修正后的代码

以下是适配当前版本的圆角AlertDialog实现,包含选项选择功能:

@Composable
fun DialogOptionsView(
    onDismiss: () -> Unit,
    onOptionConfirm: () -> Unit,
    onOptionCancel: () -> Unit
) {
    AlertDialog(
        properties = DialogProperties(),
        onDismissRequest = onDismiss,
        text = { Text("请选择操作") },
        confirmButton = {
            TextButton(onClick = onOptionConfirm) {
                Text("确认")
            }
        },
        dismissButton = {
            TextButton(onClick = onOptionCancel) {
                Text("取消")
            }
        },
        shape = MaterialTheme.shapes.large
    )
}

关键说明

  • 无需嵌套Surface:AlertDialog自带shape参数,直接设置MaterialTheme.shapes.large即可实现圆角效果。
  • 明确参数顺序或指定参数名:新版本中AlertDialog第一个参数为DialogProperties,需按顺序传递或显式指定参数名称,避免类型错误。
  • 可根据需求扩展:示例中的文本和按钮逻辑可替换为你需要的选项内容。

内容的提问来源于stack exchange,提问作者Compose Learner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 11:16:56