Flutter WebView运行报错:未知特性SUPPRESS_ERROR_PAGE求助
问题背景
购买Flutter WebView源码后,严格遵循文档操作仍运行失败,核心错误为Unknown feature SUPPRESS_ERROR_PAGE。
错误日志
E/MethodChannel#flutter/platform_views( 3411): Failed to handle method call E/MethodChannel#flutter/platform_views( 3411): java.lang.RuntimeException: Unknown feature SUPPRESS_ERROR_PAGE E/MethodChannel#flutter/platform_views( 3411): at androidx.webkit.internal.WebViewFeatureInternal.isSupported(WebViewFeatureInternal.java:649) E/MethodChannel#flutter/platform_views( 3411): at androidx.webkit.internal.WebViewFeatureInternal.isSupported(WebViewFeatureInternal.java:618) E/MethodChannel#flutter/platform_views( 3411): at androidx.webkit.WebViewFeature.isFeatureSupported(WebViewFeature.java:611) E/MethodChannel#flutter/platform_views( 3411): at com.pichillilorenzo.flutter_inappwebview_android.webview.in_app_webview.InAppWebView.prepare(InAppWebView.java:436) E/MethodChannel#flutter/platform_views( 3411): at com.pichillilorenzo.flutter_inappwebview_android.webview.in_app_webview.FlutterWebView.<init>(FlutterWebView.java:82) E/MethodChannel#flutter/platform_views( 3411): at com.pichillilorenzo.flutter_inappwebview_android.webview.FlutterWebViewFactory.create(FlutterWebViewFactory.java:67) E/MethodChannel#flutter/platform_views( 3411): at io.flutter.plugin.platform.PlatformViewsController.createPlatformView(PlatformViewsController.java:525) E/MethodChannel#flutter/platform_views( 3411): at io.flutter.plugin.platform.PlatformViewsController$1.createForPlatformViewLayer(PlatformViewsController.java:170) E/MethodChannel#flutter/platform_views( 3411): at io.flutter.embedding.engine.systemchannels.PlatformViewsChannel$1.create(PlatformViewsChannel.java:105) E/MethodChannel#flutter/platform_views( 3411): at io.flutter.embedding.engine.systemchannels.PlatformViewsChannel$1.onMethodCall(PlatformViewsChannel.java:55) E/MethodChannel#flutter/platform_views( 3411): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:267) E/MethodChannel#flutter/platform_views( 3411): at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:292) E/MethodChannel#flutter/platform_views( 3411): at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:319) E/MethodChannel#flutter/platform_views( 3411): at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12) E/MethodChannel#flutter/platform_views( 3411): at android.os.Handler.handleCallback(Handler.java:938) E/MethodChannel#flutter/platform_views( 3411): at android.os.Handler.dispatchMessage(Handler.java:99) E/MethodChannel#flutter/platform_views( 3411): at android.os.Looper.loop(Looper.java:246) E/MethodChannel#flutter/platform_views( 3411): at android.app.ActivityThread.main(ActivityThread.java:8625) E/MethodChannel#flutter/platform_views( 3411): at java.lang.reflect.Method.invoke(Native Method) E/MethodChannel#flutter/platform_views( 3411): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) E/MethodChannel#flutter/platform_views( 3411): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130) E/flutter ( 3411): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(error, Unknown feature SUPPRESS_ERROR_PAGE, null, java.lang.RuntimeException: Unknown feature SUPPRESS_ERROR_PAGE
已尝试的无效操作
flutter cleangradlew clean- 重装Flutter
- 重装Android Studio(Jellyfish 2023.3.1 Patch 1)
环境信息
- Java版本:21.0.3 LTS
- Flutter环境:检测结果无异常
解决方案
核心原因
错误由flutter_inappwebview_android插件调用了AndroidX WebView库中不存在的SUPPRESS_ERROR_PAGE特性导致,属于插件版本与本地依赖库版本不兼容问题。
具体修复步骤
锁定AndroidX WebView库版本
在项目根目录的android/build.gradle文件中添加强制依赖配置,指定兼容的WebView版本(如1.7.0,该版本包含目标特性):configurations.all { resolutionStrategy { force 'androidx.webkit:webkit:1.7.0' } }配置完成后执行
flutter clean和flutter run。降级flutter_inappwebview插件版本
修改pubspec.yaml中的flutter_inappwebview版本为与当前环境兼容的稳定版(如5.8.0),执行flutter pub get更新依赖后重新运行。更新设备系统WebView
确保测试设备上的Android System WebView应用已更新至最新版本(通过应用商店检查更新),旧版本WebView可能不支持该特性。临时修改插件源码
若上述方法均无效,可临时注释掉插件中对SUPPRESS_ERROR_PAGE的检查代码:
找到flutter_inappwebview_android插件的InAppWebView.java文件,注释以下代码:// if (WebViewFeature.isFeatureSupported(WebViewFeature.SUPPRESS_ERROR_PAGE)) { // webSettings.setSuppressErrorPage(true); // }修改后执行
flutter clean和flutter run重新编译。
内容的提问来源于stack exchange,提问作者Imam Teguh

