【问题标题】:Flutter - Webview in DEBUG is working but it's displaying blank on RELEASE apk, why?Flutter - DEBUG 中的 Webview 正在工作,但在 RELEASE apk 上显示为空白,为什么?
【发布时间】:2021-11-25 22:57:22
【问题描述】:

我正在使用这个 webviews 包处理颤振 https://pub.dev/packages/webview_flutter.

调试模式下的 webview 运行良好(由于 USB 不兼容,我使用模拟器无法在实际设备上使用调试)但它只显示灰色的空白屏幕。我也尝试过在 AndroidManifest.xml 中插入权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

代码如下:

class _WebViewHereClass extends State<WebViewHereClassState> {
  final String _url;
  bool isLoading=true;
  final _key = UniqueKey();
  _WebViewHereClass(this._url);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Stack(
          alignment: Alignment.center,
          children: <Widget>[
            Flex(
              direction: Axis.vertical,
              children: [
                Expanded(
                    flex: 1,
                    child: WebView(
                      key: _key,
                      javascriptMode: JavascriptMode.unrestricted,
                      initialUrl: _url,
                      onPageFinished: (finish) {
                        setState(() {
                          isLoading = false;
                        });
                      },
                    )
                ),
              ],
            ),
            isLoading ? const Center(
              child: CircularProgressIndicator(
                strokeWidth: 1,
              ),
            ) : Stack(),
          ],
        ),
      ),
    );
  }
}

该页面应该在我单击上一页(主页)上的按钮后显示。

为什么不显示?

【问题讨论】:

    标签: android flutter dart webview


    【解决方案1】:

    我认为您没有在 android/app/src/main/AndroidManifest.xml

    中授予互联网权限

    将此行添加到 android/app/src/main/AndroidManifest.xml

    <uses-permission android:name="android.permission.INTERNET" />
    

    关于不安全 http 的更多信息,您可以查看 this

    <uses-permission android:name="android.permission.INTERNET" /> //This line add
    <application
        android:name="io.demo.app.test"
        android:label="ProjectName"
        android:usesCleartextTraffic="true" //This line add
        android:icon="@mipmap/ic_launcher">
    

    【讨论】:

      【解决方案2】:

      您在void initState(){} 期间是否正确设置了WebView.platform = SurfaceAndroidWebView()

      【讨论】:

      • 没有,不过现在解决了,我只更新flutter和dependencies(因为这个issue一贴出来就有更新了),一切都很顺利...
      • Geat 可能是之前的设想,因为 Flutter 和 Native 的依赖冲突。
      猜你喜欢
      • 1970-01-01
      • 2021-10-01
      • 1970-01-01
      • 2020-12-30
      • 2012-04-13
      • 1970-01-01
      • 2018-09-27
      • 2013-03-28
      • 2019-12-28
      相关资源
      最近更新 更多