跳转到内容

SuperArrow

SuperArrow 是 Miuix 中的箭头指示组件,通常用于导航或展示更多内容。提供了标题、摘要和右侧箭头图标,支持点击交互,常用于设置项、菜单项或列表项中。

引入

kotlin
import top.yukonga.miuix.kmp.extra.SuperArrow

基本用法

SuperArrow 组件提供了基本的点击导航功能:

kotlin
SuperArrow(
    title = "设置项",
    onClick = { /* 处理点击事件 */ }
)

带摘要的箭头

kotlin
SuperArrow(
    title = "无线网络",
    summary = "已连接到 WIFI-HOME",
    onClick = { /* 处理点击事件 */ }
)

组件状态

禁用状态

kotlin
SuperArrow(
    title = "禁用项",
    summary = "此项目当前不可用",
    enabled = false,
    onClick = { /* 不会被触发 */ }
)

按下状态

SuperArrow 支持通过 holdDownState 参数控制按下状态,通常用于显示弹出对话框时的视觉反馈:

kotlin
val showDialog = remember { mutableStateOf(false) }

Scaffold {
    SuperArrow(
        title = "打开对话框",
        summary = "点击显示对话框",
        onClick = { showDialog.value = true },
        holdDownState = showDialog.value
    )
    // 在其他地方定义对话框
    SuperDialog(
        title = "对话框",
        show = showDialog,
        onDismissRequest = { showDialog.value = false } // 关闭对话框
    ) {
        // 对话框内容
    }
}

属性

SuperArrow 属性

属性名类型说明默认值是否必须
titleString箭头项的标题-
titleColorBasicComponentColors标题文本的颜色配置BasicComponentDefaults.titleColor()
summaryString?箭头项的摘要说明null
summaryColorBasicComponentColors摘要文本的颜色配置BasicComponentDefaults.summaryColor()
leftAction@Composable (() -> Unit)?左侧自定义内容null
rightActions@Composable RowScope.() -> Unit右侧自定义内容插槽(slot){}
bottomAction@Composable (() -> Unit)?底部自定义内容null
modifierModifier应用于组件的修饰符Modifier
insideMarginPaddingValues组件内部内容的边距BasicComponentDefaults.InsideMargin
onClick(() -> Unit)?点击时触发的回调null
holdDownStateBoolean组件是否处于按下状态false
enabledBoolean组件是否可交互true

SuperArrowDefaults 对象

SuperArrowDefaults 对象提供右侧箭头图标的默认颜色配置。

方法

方法名类型说明
rightActionColorsRightActionColors返回用于右侧箭头图标的着色(tint)配置

箭头着色说明

  • 右侧箭头图标始终显示,并根据 enabled 自动着色。
  • enabled = true 时使用 MiuixTheme.colorScheme.onSurfaceVariantActions
  • enabled = false 时使用 MiuixTheme.colorScheme.disabledOnSecondaryVariant

进阶用法

带左侧图标

kotlin
SuperArrow(
    title = "个人信息",
    summary = "查看和修改您的个人资料",
    leftAction = {
        Icon(
            imageVector = MiuixIcons.Useful.Personal,
            contentDescription = "个人图标",
            tint = MiuixTheme.colorScheme.onBackground,
            modifier = Modifier.padding(end = 16.dp)
        )
    },
    onClick = { /* 处理点击事件 */ }
)

带右侧文本(使用 rightActions 插槽)

kotlin
SuperArrow(
    title = "存储空间",
    summary = "管理应用存储空间",
    rightActions = {
        Text("12.5 GB")
    },
    onClick = { /* 处理点击事件 */ }
)

结合对话框使用

kotlin
val showDialog = remember { mutableStateOf(false) }
var language by remember { mutableStateOf("简体中文") }

Scaffold {
SuperArrow(
    title = "语言设置",
    summary = "选择应用显示语言",
    rightActions = {
        Text(language)
    },
    onClick = { showDialog.value = true },
    holdDownState = showDialog.value
)
    SuperDialog(
        title = "选择语言",
        show = showDialog,
        onDismissRequest = { showDialog.value = false } // 关闭对话框
    ) {
        // 对话框内容
        Card {
            SuperArrow(
                title = "简体中文",
                onClick = {
                    language = "简体中文"
                    showDialog.value = false // 关闭对话框
                }
            )
            SuperArrow(
                title = "English",
                onClick = {
                    language = "English"
                    showDialog.value = false // 关闭对话框
                }
            )
        }
        Row(
            horizontalArrangement = Arrangement.SpaceBetween
        ) {
            TextButton(
                text = "取消",
                onClick = { showDialog.value = false },  // 关闭对话框
                modifier = Modifier.weight(1f).padding(top = 8.dp)
            )
        }
    }
}

变更日志

基于 Apache-2.0 许可发布