浅色 + 默认颜色 | 浅色 + 橘黄色 | 深色 + 默认颜色 | 深色 + 绿色主题 |
![]() | ![]() | ![]() | ![]() |
ThemeState 提供的一组简洁的 API,用于主题配置和信息查询。方法 | 参数 | 返回值 | 说明 |
setThemeMode | ThemeMode | Unit | 设置显示模式,自动保存并刷新。 ThemeMode.SYSTEM:跟随系统外观。ThemeMode.LIGHT:强制使用浅色模式。ThemeMode.DARK:强制使用深色模式。 |
方法 | 参数 | 返回值 | 说明 |
setPrimaryColor | String | Unit | 设置主题色,需要 Hex 格式(例如 "#1C66E5")。 |
clearPrimaryColor | 无 | Unit | 清除自定义主题色,恢复默认蓝色。 |
setThemeMode 或 setPrimaryColor 后,配置会自动保存到持久化存储,无需手动保存。下次启动应用时会自动加载。属性 | 类型 | 说明 |
currentMode | ThemeMode | 当前主题模式。 |
currentPrimaryColor | String? | 当前主题色(Hex 格式)。 |
hasCustomPrimaryColor | Boolean | 是否设置了自定义主题色。 |
isDarkMode | Boolean | 当前是否为深色模式。 |


appConfig.json文件内容如下所示,与 AppBuilder 页面的配置项一一对应,与定义外观相关的配置是 theme及其子字段:{"theme": {"mode": "light", // 主题模式,light-浅色模式,dark-深色模式,system-自动跟随系统"primaryColor": "#E65100" // 主色调,16 进制颜色值},"messageList": {"alignment": "two-sided","enableReadReceipt": false,"messageActionList": ["copy","recall","quote","forward","delete"]},"conversationList": {"enableCreateConversation": true,"conversationActionList": ["delete","mute","pin","markUnread"]},"messageInput": {"hideSendButton": false,"attachmentPickerMode": "collapsed"},"search": {"hideSearch": false},"avatar": {"shape": "circular"}}
参数说明 | 类型 | 可选值 | 说明 |
mode | String | "system"、"light"、"dark" | 主题模式 |
primaryColor | String | Hex 颜色值,例如 "#0ABF77" | 主题色 |

setThemeMode 直接设置主题模式。示例代码如下所示:val themeState = ThemeState.sharedColumn {Button(onClick = {themeState.setThemeMode(ThemeMode.SYSTEM)}) { Text(text = "跟随系统") }Button(onClick = {themeState.setThemeMode(ThemeMode.LIGHT)}) { Text(text = "浅色模式") }Button(onClick = {themeState.setThemeMode(ThemeMode.DARK)}) { Text(text = "深色模式") }}
setPrimaryColor 设置主题色,只需要传入一个主颜色值,整个 TUIKit Compose 组件会自动根据该主颜色值,为不同的组件适配出一组相同色系里的相似色值渲染界面,您无需再手动适配界面 UI。示例代码如下所示:Column {var text: String by remember { mutableStateOf("#1C66E5") }fun isValidHexColor(): Boolean {return text.matches(Regex("^#[0-9A-Fa-f]{6}$"))}BasicTextField(value = text,onValueChange = { text = it },modifier = Modifier.fillMaxWidth().padding(16.dp))Button(enabled = isValidHexColor(),onClick = {themeState.setPrimaryColor(text)}) {Text("应用主题色")}}
themeState.colors 中的颜色,确保主题切换时界面保持一致。if themeState.isDarkMode {// 当前是深色模式} else {// 当前是浅色模式}
themeState.clearPrimaryColor() // 清除自定义主题色themeState.setThemeMode(ThemeMode.SYSTEM) // 恢复跟随系统
val config = themeState.currentThemeprint("模式: ${config.mode}")print("主题色: ${config.primaryColor ?: "默认"}")
themeState.setThemeMode(ThemeMode.DARK)themeState.setPrimaryColor("#0ABF77")
文档反馈