跳转到内容

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
var 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
rightTextString?右侧文本内容null
rightActionColorRightActionColors右侧文本和箭头的颜色配置SuperArrowDefaults.rightActionColors()
modifierModifier应用于组件的修饰符Modifier
insideMarginPaddingValues组件内部内容的边距BasicComponentDefaults.InsideMargin
onClick(() -> Unit)?点击箭头时触发的回调null
holdDownStateBoolean组件是否处于按下状态false
enabledBoolean组件是否可交互true

SuperArrowDefaults 对象

SuperArrowDefaults 对象提供了箭头组件的默认值和颜色配置。

方法

方法名类型说明
rightActionColorsRightActionColors创建右侧文本和箭头的颜色配置

RightActionColors 类

参数类型说明
colorColor正常状态下的颜色
disabledColorColor禁用状态下的颜色

进阶用法

带左侧图标

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

带右侧文本

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

结合对话框使用

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

Scaffold {
    SuperArrow(
        title = "语言设置",
        summary = "选择应用显示语言",
        rightText = 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)
            )
        }
    }
}

自定义颜色

kotlin
SuperArrow(
    title = "自定义颜色",
    titleColor = BasicComponentDefaults.titleColor(
        color = MiuixTheme.colorScheme.primary
    ),
    summary = "使用自定义颜色",
    summaryColor = BasicComponentDefaults.summaryColor(
        color = MiuixTheme.colorScheme.secondary
    ),
    rightActionColor = RightActionColors(
        color = MiuixTheme.colorScheme.primary,
        disabledColor = MiuixTheme.colorScheme.disabledOnSecondaryVariant
    ),
    onClick = { /* 处理点击事件 */ }
)

基于 Apache-2.0 许可发布