You need to enable JavaScript to run this app. 如何在Flutter webview_flutter中禁用小米MIUI强制暗色模式?
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flutter webview_flutter中禁用小米MIUI强制暗色模式?

问题原因

该问题是小米MIUI系统的自定义特性:当系统开启暗色模式时,会默认对所有未明确声明关闭强制暗黑适配的WebView内容自动反色,与Flutter框架本身的暗色模式配置无关。

解决方案

方案1:Flutter端修复(优先推荐)

全局关闭App的强制暗黑适配,一劳永逸解决所有WebView的适配问题:

  • 找到项目路径下的android/app/src/main/res/values/styles.xml文件,在App的主题配置中添加属性:
<style name="你的App主题名" parent="你用的父主题">
    <!-- 原有其他主题配置保持不变 -->
    <item name="android:forceDarkAllowed">false</item>
</style>
  • 如果项目存在android/app/src/main/res/values-night/styles.xml暗色主题配置文件,也需要在对应主题中添加上述相同配置。

如果不想全局关闭App的强制暗黑适配,仅针对WebView生效,可升级webview_flutter到4.0及以上版本,在WebViewController初始化完成后调用关闭强制暗黑的方法:

// 在onWebViewCreated回调中添加
if (Platform.isAndroid) {
  await _webViewController.setForceDark(ForceDark.off);
}

方案2:网页端修复(无需修改Flutter代码时使用)

小米的强制暗黑逻辑仅对未明确声明色彩方案的网页生效,在网页代码中明确指定使用亮色模式即可避免被系统修改:

  1. 在网页<head>标签中添加色彩方案声明的meta标签
  2. 明确指定根元素和body的基础色彩,避免系统覆盖
    修改后的测试网页完整代码如下:
<html>
  <head>
    <meta name="color-scheme" content="only light">
    <style>
      :root { color-scheme: light; }
    </style>
  </head>
  <body style="
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: #ffffff;
    color: #000000;
  ">
    <h1 style="font-family: Arial;">
      My WebView Page
    </h1>
  </body>
</html>

内容的提问来源于stack exchange,提问作者Rafael Stefani Baptista

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 03:54:03