Vik*_*uli 12 android flutter flutterwebviewplugin
我正在创建一个 Flutter 应用程序。
如果我在调试模式下运行这个应用程序,webview效果很好
但如果我在发布模式下运行此应用程序,它会显示空白屏幕。正在显示PlatformException
我尝试从 github issues 获取帮助,但找不到解决方案。
显现
<uses-permission android:name="android.permission.INTERNET"/>
Run Code Online (Sandbox Code Playgroud)
构建.gradle
minSdkVersion 20
targetSdkVersion 29
Run Code Online (Sandbox Code Playgroud)
pubspec.yaml
webview_flutter: ^1.0.7
Run Code Online (Sandbox Code Playgroud)
错误日志
E/flutter (16872): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: PlatformException(error, java.lang.IllegalStateException: Trying to create a platform view of unregistered type: plugins.flutter.io/webview
E/flutter (16872): at io.flutter.plugin.platform.j$a.g(Unknown Source:229)
E/flutter (16872): at io.flutter.embedding.engine.i.j$a.b(Unknown Source:152)
E/flutter (16872): at io.flutter.embedding.engine.i.j$a.j(Unknown Source:144)
E/flutter (16872): at e.a.c.a.j$a.a(Unknown Source:17)
E/flutter (16872): at io.flutter.embedding.engine.e.b.d(Unknown Source:57)
E/flutter (16872): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(Unknown Source:4)
E/flutter (16872): at android.os.MessageQueue.nativePollOnce(Native Method)
E/flutter (16872): at android.os.MessageQueue.next(MessageQueue.java:335)
E/flutter (16872): at android.os.Looper.loop(Looper.java:183)
E/flutter (16872): at android.app.ActivityThread.main(ActivityThread.java:7660)
E/flutter (16872): at java.lang.reflect.Method.invoke(Native Method)
E/flutter (16872): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
E/flutter (16872): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
E/flutter (16872): , null, null)
E/flutter (16872): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:581)
E/flutter (16872): #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:158)
E/flutter (16872): <asynchronous suspension>
E/flutter (16872): #2 TextureAndroidViewController._sendCreateMessage (package:flutter/src/services/platform_views.dart:1036)
E/flutter (16872): <asynchronous suspension>
E/flutter (16872): #3 AndroidViewController.create (package:flutter/src/services/platform_views.dart:742)
E/flutter (16872): <asynchronous suspension>
E/flutter (16872): #4 RenderAndroidView._sizePlatformView (package:flutter/src/rendering/platform_view.dart:195)
E/flutter (16872): <asynchronous suspension>
Run Code Online (Sandbox Code Playgroud)
小智 5
请检查您的清单文件中是否有“android.permission.INTERNET”权限。在“app/src/main/AndroidManifest.xml”文件夹中。我使用flutter_inappwebview: ^5.3.2插件并在发布模式下遇到同样的问题。
小智 0
我相信我遇到了同样的问题,发生的情况是既有已初始化的缓存颤振引擎,又有后来创建的新颤振引擎。
从那时起,我使用了缓存的颤动引擎,并使用方法通道根据需要进行导航。
因此,在某个地方(可能在您的 MainActivity 或 iOS 等效项中)设置您的缓存 Flutter 引擎:
val flutterEngine = FlutterEngine(this)
flutterEngine.dartExecutor.executeDartEntrypoint(
DartExecutor.DartEntrypoint.createDefault()
)
FlutterEngineCache
.getInstance()
.put(INSERT_YOUR_DESIRED_FLUTTER_ENGINE_ID_HERE, flutterEngine)
Run Code Online (Sandbox Code Playgroud)
然后当你想打开你的 FlutterFragment(Android 示例)时:
var flutterEngine = FlutterEngineCache
.getInstance()
.get(INSERT_YOUR_FLUTTER_ENGINE_ID_FROM_BEFORE_HERE)
var flutterFragment = FlutterFragment
.withCachedEngine(INSERT_YOUR_FLUTTER_ENGINE_ID_FROM_BEFORE_HERE)
.build()
MethodChannel(
flutterEngine.dartExecutor.binaryMessenger,
INSERT_YOUR_DESIRED_METHOD_CHANNEL_NAME_HERE
).invokeMethod("setRoute", INSERT_ROUTE_YOU_WANT_HERE)
openFragment(flutterFragment!!)
Run Code Online (Sandbox Code Playgroud)
以及如何在 Flutter Dart 代码中使用此方法通道的示例
class _MyViewState extends State<MyView> {
static const myMethodChannel = const MethodChannel(INSERT_YOUR_DESIRED_METHOD_CHANNEL_NAME_HERE);
Future<void> _handleMethodCalls(MethodCall call) async {
switch (call.method) {
case "setRoute":
Navigator.pushReplacmentNamed(context, INSERT_YOUR_DESIRED_ROUTE_NAME_HERE)
...
}
}
...
@override
void initState() {
super.initState();
platform.setMethodCallHandler(_handleMethodCalls);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6975 次 |
| 最近记录: |