Android 9上的Flutter WebView插件错误

j2cgzkjk  于 2022-12-09  发布在  Android
关注(0)|答案(2)|浏览(296)

我正在开发一个Android应用程序,其中有一个Flutter WebView插件来显示网页.它在我的手机上完美工作(Android 8.1 LG V20).但在我的朋友手机(Android 9小米Note 7 Pro)它显示此错误:

我的验证码:flutter_webview_plugin: ^0.3.8

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

 class WebPage extends StatefulWidget {
  final String url;

  WebPage({
    this.url,
  });
  @override
  _WebPageState createState() => _WebPageState();
}

class _WebPageState extends State<WebPage> {
  @override
  void initState() {
    super.initState();
    print('url = ' + widget.url);
  }
  @override
  Widget build(BuildContext context) {
    String link = widget.url;
    return WebviewScaffold(
      url: link,
      appBar: new AppBar(
        centerTitle: true,
        backgroundColor: Colors.green,
      ),
      displayZoomControls: true,
    );
  }
}

任何帮助都将不胜感激。

vs91vp4v

vs91vp4v1#

您的朋友之所以看到此错误,是因为作为Android 9及更高版本的标准,连接到http域是非法的,Google认为这是不安全的。
相反,您有3个选项。

个https

使用站点的https变体。
不加载http://window.arian.co.ir,而是加载https://window.arian.co.ir

退出您的域。

您可以选择退出window.arian域的安全检查。
创建一个名为network_security_config.xml的文件,并将其放在android文件夹的res/xml/文件夹中。

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">window.arian.co.ir</domain>
    </domain-config>
</network-security-config>

完全退出

如果需要,您可以通过将android:usesCleartextTraffic="true"放在Application标记上,选择退出对WebView内所有站点的安全检查。
android文件夹中,导航到AndroidManifest.xml

<application
        android:name="io.flutter.app.FlutterApplication"
        android:icon="@mipmap/ic_launcher"
        android:usesCleartextTraffic="true">

请参阅文档:

  • https://developer.android.com/training/articles/security-config#CleartextTrafficPermitted
63lcw9qa

63lcw9qa2#

如果以上任何解决方案都不起作用,那么您可以尝试此解决方案

javascriptMode: JavascriptMode.disabled,

相关问题