Android 端网页白屏
问题1:在部分鸿蒙系统 HarmonyOS 和 Android 手机系统上,网页会出现渲染模糊现象;
问题2:升级 Android Studio(2024.2.2 Patch 1)后,部分 HarmonyOS 和 Android 手机会出现白屏现象,未升级前无此问题。
Android Studio 详细版本如下:
Android Studio Ladybug Feature Drop | 2024.2.2 Patch 1
Build #AI-242.23726.103.2422.13016713, built on February 6, 2025
Runtime version: 21.0.5+-12932927-b750.29 x86_64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Toolkit: sun.lwawt.macosx.LWCToolkit
原因说明
在国内,手机厂商都会在 Android 系统的基础上进行深度定制,与谷歌官方 WebView 版本并不同步,以上问题都是由于此原因。
谷歌官方的 Android 系统,在API < 23
时,Hybrid Composition 是默认开启的。在API >= 23
时,可以通过AndroidWebViewWidgetCreationParams.displayWithHybridComposition
配置。
Hybrid Composition 开启后会牺牲一些性能,但会获得更好的显示效果。开启后可解决网页模糊问题。
webview_flutter_android 文档说明如下:
Hybrid Composition
This is the current default mode for versions <23. It ensures that the WebView will display and work as expected, at the cost of some performance. See:
This can be configured for versions >=23 with AndroidWebViewWidgetCreationParams.displayWithHybridComposition. See pub.dev/packages/we… for more details on setting platform-specific features in the main plugin.
解决示例
定制的 Android 未自动开启 Hybrid Composition,在 Android 系统上手动设置开启即可。
import 'package:webview_flutter_android/webview_flutter_android.dart';
final _webVC = WebViewController();
final webView = _buildWebViewWidget(_webVC);
// 修复部分 Android 手机渲染空白和模糊问题
// Android 手机设置 displayWithHybridComposition 为 true
Widget _buildWebViewWidget(WebViewController webVC) {
if (WebViewPlatform.instance is AndroidWebViewPlatform) {
return WebViewWidget.fromPlatformCreationParams(
params: AndroidWebViewWidgetCreationParams(controller: webVC.platform, displayWithHybridComposition: true),
);
}
// 其他系统保持默认值即可
return WebViewWidget(controller: webVC);
}