uni-app 使用最新hbuilder打包后app自动启用了暗黑模式

发布于 1周前 作者 bupafengyu 来自 Uni-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     |              |

6 回复

此问题10月16晚已更新云端打包机修复此问题,请勾选“传统打包”重新提交云端打包。


一样,我也出现了这个问题,你解决了么?

没呢,别的手机就算开了暗黑模式不会出现这个问题

回复 Crzcat: iQOO 也有问题,我试了

回复 碎时UP: 官方说已经修复了,重新打包

在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.vuemounted生命周期钩子中设置根组件的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打包后,你的应用也能按照你的预期展示界面。

回到顶部