gpt4 book ai didi

flutter - 在 flutter WebView 中关闭小米 MIUI 深色模式

转载 作者:行者123 更新时间:2023-12-05 01:29:39 27 4
gpt4 key购买 nike

我正在使用 webview_flutter插件,当 webview 在暗模式设备上的任何小米上打开时,它会强制进入暗模式,我不知道如何避免它

这是我的代码:

import 'dart:async';
import 'dart:io';

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';

class CdsWebView extends StatefulWidget {
const CdsWebView({
Key key,
@required this.url,
}) : super(key: key);

final String url;

@override
_CdsWebViewState createState() => _CdsWebViewState();
}

class _CdsWebViewState extends State<CdsWebView> {
final Completer<WebViewController> _controller =
Completer<WebViewController>();

WebViewController _webViewController;
bool isLoading = true;

@override
void initState() {
super.initState();
if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView();
}

@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Builder(builder: (BuildContext context) {
return Stack(children: <Widget>[
WebView(
initialUrl: widget.url,
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (WebViewController webViewController) {
_controller.complete(webViewController);
_webViewController = webViewController;
},
onPageFinished: (finish) {
this.setState(() {
isLoading = false;
});
},
),
isLoading
? Container(
child: Center(
child: CircularProgressIndicator(
valueColor:
AlwaysStoppedAnimation<Color>(Colors.red),
),
),
)
: Container()
]);
}),
),
);
}
}

如果在flutter中无法阻止,有没有办法在webview页面中阻止?

它像这样改变背景和文本颜色:

Normal

Xiaomi dark mode device

WebView测试页面代码:

<html>
<head>
</head>
<body style="
display: flex;
justify-content: center;
align-items: center;">
<h1 style="font-family: Arial;">
My WebView Page
</h1>
</body>
</html>

最佳答案

Force dark 的实现是为了让开发者更轻松地切换到深色主题,为用户提供统一的体验。

它分析浅色主题应用的每个 View ,并在将其绘制到屏幕之前自动应用深色主题。

在基于Android 10或更高版本的MIUI中,应用程序被强制使用其深色主题,这可能会导致外观丑陋的强制深色webview和pwa应用程序,例如'LinkedIn Go'。

要关闭此功能,请转到您的 android 文件夹,然后转到 \app\src\main\res\values\themes.xml文件。将 forceDarkAllowed 设置为 false <style name="Theme.YOUR_APP_NAME" parent="Theme.MaterialComponents.DayNight"> , 像这样

    <item name="android:forceDarkAllowed">false</item>

如果这不起作用,请在 values-night/themes.xml 中执行相同的操作.这应该可以解决问题。

如果你仍然对把它放在哪里感到困惑,你的最终代码应该看起来像这样-

<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.YOUR_APP_NAME" parent="Theme.MaterialComponents.DayNight">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/blue_grey_500</item>
<item name="colorPrimaryVariant">@color/blue_grey_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/grey_200</item>
<item name="colorSecondaryVariant">@color/grey_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Customize your theme here. -->
<item name="android:forceDarkAllowed">false</item>
</style>

</resources>

关于flutter - 在 flutter WebView 中关闭小米 MIUI 深色模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67589738/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com