From 85818105ce33ecad15751c2544dc3dfa4ea5f5f6 Mon Sep 17 00:00:00 2001 From: AskaEth Date: Tue, 6 Oct 2026 15:48:54 +0800 Subject: [PATCH] =?UTF-8?q?feat(settings):=20=E9=80=80=E5=87=BA=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E4=BB=8E=E5=B0=8F=E5=9B=BE=E6=A0=87=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E6=94=B9=E6=88=90=E5=B8=A6=E6=96=87=E5=AD=97=E7=9A=84=E5=8D=B1?= =?UTF-8?q?=E9=99=A9=E8=A1=8C=E6=9D=A1=E7=9B=AE=EF=BC=8C=E5=9B=BE=E6=A0=87?= =?UTF-8?q?=E6=8D=A2=20Remove=EF=BC=88W52C=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 设置页最底部原来是一枚居中、无文字的图标按钮,图标用的还是「返回」箭头(MiuixIcons.Back), 真机上看着就是返回键——主人为此翻半天才找到登出在哪。这是本次改动的由来。 - 改成 Miuix 行条目(BasicComponent + 外层 PreferenceCard,与同页其它条目同形),文字「退出登录」, 标题与图标都用 MiuixTheme.colorScheme.error 危险色。 - 图标换成 MiuixIcons.Remove:Miuix 里没有专门的登出/退出字形(Basic 只有 7 个图标), extended 里只有它画的是「箭头离开方框」,语义最接近「退出」;Back 是本条要修的毛病, Import 方向相反(箭头进方框=导入/登录),Delete/Refresh 之类会被误读成删号或重来。 - 图标 contentDescription 置 null:文字已经把这条读出来了,图标再报一遍只会让读屏重复。 行为一字不变:仍然点了就登出(onLogout 一路接到 CyreneApp 里的 authManager.logout()), 没有新增确认流程。 --- .../yeij/cyrene/ui/settings/SettingsScreen.kt | 32 +++++++++---------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/app/src/main/kotlin/top/yeij/cyrene/ui/settings/SettingsScreen.kt b/app/src/main/kotlin/top/yeij/cyrene/ui/settings/SettingsScreen.kt index 39186fa..da968f4 100644 --- a/app/src/main/kotlin/top/yeij/cyrene/ui/settings/SettingsScreen.kt +++ b/app/src/main/kotlin/top/yeij/cyrene/ui/settings/SettingsScreen.kt @@ -1,11 +1,8 @@ package top.yeij.cyrene.ui.settings -import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState @@ -14,7 +11,6 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import kotlinx.coroutines.launch @@ -25,15 +21,16 @@ import top.yeij.cyrene.core.prefs.InterruptMode import top.yeij.cyrene.core.prefs.ThemeMode import top.yeij.cyrene.ui.common.PreferenceCard import top.yukonga.miuix.kmp.basic.BasicComponent +import top.yukonga.miuix.kmp.basic.BasicComponentDefaults import top.yukonga.miuix.kmp.basic.Icon import top.yukonga.miuix.kmp.basic.IconButton import top.yukonga.miuix.kmp.basic.Scaffold import top.yukonga.miuix.kmp.basic.SmallTopAppBar import top.yukonga.miuix.kmp.basic.Text import top.yukonga.miuix.kmp.icon.MiuixIcons -import top.yukonga.miuix.kmp.icon.extended.Back import top.yukonga.miuix.kmp.icon.extended.ChevronBackward import top.yukonga.miuix.kmp.icon.extended.ChevronForward +import top.yukonga.miuix.kmp.icon.extended.Remove import top.yukonga.miuix.kmp.preference.SwitchPreference import top.yukonga.miuix.kmp.theme.MiuixTheme @@ -149,22 +146,23 @@ fun SettingsScreen( } Spacer(Modifier.height(32.dp)) + // 图标不能再用 Back(左箭头)——真机上它看着就是「返回」,这条曾经难找得主人翻了半天。 + // Miuix 没有专门的登出/退出字形(Basic 只有 7 个图标),extended 里最贴切的是 Remove: + // 它画的是「箭头离开方框」,语义就是移出/离开。 PreferenceCard { - Row( - modifier = Modifier - .fillMaxWidth() - .padding(vertical = 8.dp), - horizontalArrangement = Arrangement.Center, - verticalAlignment = Alignment.CenterVertically, - ) { - IconButton(onClick = onLogout) { + BasicComponent( + title = "退出登录", + titleColor = BasicComponentDefaults.titleColor(color = MiuixTheme.colorScheme.error), + startAction = { Icon( - imageVector = MiuixIcons.Back, - contentDescription = "登出", + imageVector = MiuixIcons.Remove, + // 文字已经把这条读出来了,图标再说一遍只会让读屏重复。 + contentDescription = null, tint = MiuixTheme.colorScheme.error, ) - } - } + }, + onClick = onLogout, + ) } Spacer(Modifier.height(32.dp)) }