uni-app 使用最新hbuilder打包后app自动启用了暗黑模式
uni-app 使用最新hbuilder打包后app自动启用了暗黑模式
操作步骤:
- 使用最新hbuilder 云打包
预期结果:
- 不启用暗黑模式
实际结果:
- 启用了暗黑模式
bug描述:
使用最新hbuilder云打包后,手机开启暗黑主题后,app也会变成暗黑模式,因为未作适配,很难看,请问怎么解决。 同样的代码,13号打包的没问题,13号之后更新了hbuilder然后就出现问题了, 还有我发现别的手机不会出现,我的redmi会出现这个问题
| 开发环境 | 版本号 | 项目创建方式 |
|----------|----------|--------------|
| PC | Windows | HBuilderX |
| | win11 22631.4249 | |
| 手机 | Android | |
| | Android 13 | |
| 手机厂商 | | 小米 |
| 手机机型 | | redmi k40s |
| | | |
| vue | vue2 | |
| HBuilderX| 4.29 | |
此问题10月16晚已更新云端打包机修复此问题,请勾选“传统打包”重新提交云端打包。
一样,我也出现了这个问题,你解决了么?
没呢,别的手机就算开了暗黑模式不会出现这个问题
回复 Crzcat: iQOO 也有问题,我试了
在uni-app中,应用可能会根据系统主题自动切换到暗黑模式(Dark Mode)。虽然uni-app本身没有直接的配置来禁用或强制启用暗黑模式,但你可以通过代码来控制应用的界面主题。以下是一个如何在uni-app中根据系统主题调整界面样式,或者强制应用使用特定主题(比如禁用暗黑模式)的示例。
1. 获取系统主题
首先,你需要判断当前系统主题是否为暗黑模式。在uni-app中,你可以通过JavaScript的window.matchMedia
方法来检测。
const isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;
2. 根据系统主题应用样式
你可以根据isDarkMode
的值来动态应用不同的CSS样式。例如,你可以在App.vue
的mounted
生命周期钩子中设置根组件的class。
<template>
<App />
</template>
<script>
export default {
mounted() {
const isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;
document.documentElement.classList.toggle('dark-mode', isDarkMode);
}
}
</script>
<style>
/* 默认主题样式 */
body {
background-color: white;
color: black;
}
/* 暗黑主题样式 */
body.dark-mode {
background-color: black;
color: white;
}
</style>
3. 强制应用使用特定主题
如果你希望应用始终使用明亮主题,无论系统主题如何,你可以简单地不在dark-mode
类上切换,或者始终移除该类。
document.documentElement.classList.remove('dark-mode');
你可以将上述代码放在一个全局的事件监听器中,或者在每次页面加载时执行,以确保应用的界面主题始终如一。
4. 使用条件编译(可选)
如果你的应用需要在不同的平台上表现不同,你还可以利用uni-app的条件编译功能,为特定平台编写特定的主题处理逻辑。
<!-- #ifdef APP-PLUS -->
<script>
// 针对App平台的特定代码
</script>
<!-- #endif -->
通过上述方法,你可以有效地控制uni-app应用的主题,无论是跟随系统主题还是强制使用特定主题。这样,即使在使用最新版本的HBuilder打包后,你的应用也能按照你的预期展示界面。