【问题标题】:Flutter WebView Plugin error on android 9android 9上的Flutter WebView插件错误
【发布时间】:2024-01-23 00:47:01
【问题描述】:

我正在开发一个带有 Flutter WebView 插件来显示网页的 android 应用程序。它在我的手机(Android 8.1 LG V20)上完美运行。但在我朋友的手机(Android 9 xiaomi 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,
    );
  }
}

任何帮助将不胜感激。

【问题讨论】:

  • 不要在 URL 中使用 http。更改为 HTTPS。
  • 我需要 http 才能工作,该网站没有 https。感谢您让我意识到问题@RichardHeap

标签: android flutter dart webview


【解决方案1】:

您的朋友看到​​此错误,因为作为 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">

查看文档:

【讨论】:

  • 哇!这很有效,完美而快速:)。谢谢!我使用了第三个,因为我的应用中有很多 http。
  • 第三个选项对我有用,设置使用 CleartextTraffic="true"。谢谢
最近更新 更多