uniapp 如何获取当前是否暗黑模式
在uniapp开发中,如何判断当前系统是否处于暗黑模式?有没有跨平台的解决方案?我看官方文档没有明确的API说明,希望有经验的朋友能分享下具体实现方法,包括如何监听模式切换事件。
2 回复
在uniapp中,可以使用uni.getSystemInfoSync()获取系统信息,然后判断theme属性。如果值为’dark’,则为暗黑模式。
示例代码:
const systemInfo = uni.getSystemInfoSync();
if (systemInfo.theme === 'dark') {
// 暗黑模式
}
在 UniApp 中,可以通过以下方法检测当前是否处于暗黑模式:
方法一:使用 uni.getSystemInfo() 获取系统主题
通过系统信息 API 判断当前主题模式:
uni.getSystemInfo({
success: (res) => {
if (res.theme === 'dark') {
console.log('当前是暗黑模式')
// 执行暗黑模式相关逻辑
} else {
console.log('当前是浅色模式')
// 执行浅色模式相关逻辑
}
}
})
方法二:监听主题变化
如果需要实时响应主题切换,可以添加监听器:
// 监听主题变化
uni.onThemeChange((res) => {
if (res.theme === 'dark') {
console.log('切换到暗黑模式')
} else {
console.log('切换到浅色模式')
}
})
// 初始检查
uni.getSystemInfo({
success: (res) => {
console.log('当前主题:', res.theme)
}
})
注意事项:
-
平台支持:
- 此功能主要支持 iOS、Android 及部分小程序平台
- 在 H5 端可能无法获取主题信息
-
兼容性处理:
// 安全获取方式
const theme = res.theme || 'light'
- CSS 适配: 建议同时使用 CSS 媒体查询作为备用方案:
@media (prefers-color-scheme: dark) {
/* 暗黑模式样式 */
}
@media (prefers-color-scheme: light) {
/* 浅色模式样式 */
}
推荐结合使用 JS 检测和 CSS 媒体查询,以确保最佳兼容性和用户体验。

