现有Android项目中FlutterFragment集成InAppWebView失败求助
在FlutterFragment中集成InAppWebView遇到的问题
我正尝试将Flutter库InAppWebView集成到基于传统XML布局的现有Android应用中。使用FlutterActivity时一切正常,但改用FlutterFragment后,InAppWebView出现错误——我的目标是让WebView仅占据屏幕一部分,所以必须用Fragment实现。怀疑是对Fragment生命周期的理解有误,希望有人指出问题所在。
问题复现步骤
- 已创建Android应用和Flutter模块
- 将Flutter组件加载到FlutterActivity中时运行正常
- 加载到FlutterFragment中时,执行以下代码后触发错误:
这段代码是Flutter模块main.dart的await InAppWebViewController.setWebContentsDebuggingEnabled(true);Future main()中最先执行的操作之一(main.dart使用了InAppWebView文档中的示例代码),错误日志如下:E/OpenGLRenderer: Unable to match the desired swap behavior. E/flutter: [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: MissingPluginException(No implementation found for method setWebContentsDebuggingEnabled on channel com.pichillilorenzo/flutter_inappwebview_manager) #0 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:308:7) <asynchronous suspension> #1 InAppWebViewController.setWebContentsDebuggingEnabled (package:flutter_inappwebview/src/in_app_webview/in_app_webview_controller.dart:3817:12) <asynchronous suspension> #2 main (package:flutter_web_view/main.dart:11:5) <asynchronous suspension> - 如果移除上述引发错误的代码,会出现另一个错误:
E/flutter: [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(error, java.lang.IllegalStateException: Trying to create a platform view of unregistered type: com.pichillilorenzo/flutter_inappwebview at io.flutter.plugin.platform.PlatformViewsController$1.createPlatformView(PlatformViewsController.java:489) at io.flutter.plugin.platform.PlatformViewsController$1.createForPlatformViewLayer(PlatformViewsController.java:163) at io.flutter.embedding.engine.systemchannels.PlatformViewsChannel$1.create(PlatformViewsChannel.java:105) at io.flutter.embedding.engine.systemchannels.PlatformViewsChannel$1.onMethodCall(PlatformViewsChannel.java:55) at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:258) at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:295) at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:322) at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12) at android.os.Handler.handleCallback(Handler.java:958) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:205) at android.os.Looper.loop(Looper.java:294) at android.app.ActivityThread.main(ActivityThread.java:8176) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:971) , null, null) #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:652:7) #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:310:18) <asynchronous suspension> #2 ExpensiveAndroidViewController._sendCreateMessage (package:flutter/src/services/platform_views.dart:1040:5) <asynchronous suspension> #3 AndroidViewController.create (package:flutter/src/services/platform_views.dart:763:5) <asynchronous suspension> - 无论哪种情况,WebView都无法加载
- 已在该Flutter库的GitHub页面提交issue
内容的提问来源于stack exchange,提问作者JacobToftgaardRasmussen
相关产品推荐
相关产品推荐

