繁体   English   中英

我有一个关于在 flutter 中使用 Webview 的问题

[英]I have a question about using Webview in flutter

您好,我在 flutter 中链接 webview 时遇到问题,所以我想问一个问题。

首先,webview连接正常。 但是,当我单击 webview 中的另一个超链接时,应用程序本身将终止。

在这种情况下,我还有什么需要处理的吗?

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

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key}) : super(key: key);

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

class _MyHomePageState extends State<MyHomePage> {
  WebViewController _controller;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: WebView(
          initialUrl: 'https://www.notion.so/noteasy/915417f1fd964d1f92ad3bb6429b908a',
          javascriptMode: JavascriptMode.unrestricted,
        ),
      ),
    );
  }
}

这是当我按下超链接并被强行终止时发生的日志。

D/EGL_emulation(28572): eglMakeCurrent: 0xeaff8800: ver 2 0 (tinfo 0xdfa52190)
D/eglCodecCommon(28572): setVertexArrayObject: set vao to 0 (0) 1 2
W/TextClassifierService(28572): Package or service not found in package com.google.android.as for user 0
E/InputMethodManager(28572): b/117267690: Failed to get fallback IMM with expected displayId=14 actual IMM#displayId=0 view=io.flutter.plugins.webviewflutter.InputAwareWebView{2e377eb VFEDHVC.. .F...... 0,0-1080,1731}
D/eglCodecCommon(28572): setVertexArrayObject: set vao to 2 (2) 0 0
D/AndroidRuntime(28572): Shutting down VM
E/AndroidRuntime(28572): FATAL EXCEPTION: main
E/AndroidRuntime(28572): Process: kr.noteasy.sheeps_app, PID: 28572
E/AndroidRuntime(28572): java.lang.NullPointerException: Attempt to read from field 'android.view.WindowManager$LayoutParams android.view.ViewRootImpl.mWindowAttributes' on a null object reference
E/AndroidRuntime(28572):    at android.view.inputmethod.InputMethodManager.startInputInner(InputMethodManager.java:1625)
E/AndroidRuntime(28572):    at android.view.inputmethod.InputMethodManager.checkFocus(InputMethodManager.java:1864)
E/AndroidRuntime(28572):    at android.view.inputmethod.InputMethodManager.isActive(InputMethodManager.java:1183)
E/AndroidRuntime(28572):    at io.flutter.plugins.webviewflutter.InputAwareWebView$1.run(InputAwareWebView.java:188)
E/AndroidRuntime(28572):    at android.os.Handler.handleCallback(Handler.java:883)
E/AndroidRuntime(28572):    at android.os.Handler.dispatchMessage(Handler.java:100)
E/AndroidRuntime(28572):    at android.os.Looper.loop(Looper.java:214)
E/AndroidRuntime(28572):    at android.app.ActivityThread.main(ActivityThread.java:7356)
E/AndroidRuntime(28572):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(28572):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
E/AndroidRuntime(28572):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
I/Process (28572): Sending signal. PID: 28572 SIG: 9

升级到最新的稳定版并使用最新的webview_flutter 0.3.22+1 它解决了我的问题。

为您的 Android 平台添加 SurfaceAndroidWebview。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM