如何在颤抖中修复'net :: ERR_CLEARTEXT_NOT_PERMITTED'

时间:2019-04-09 12:01:07

标签: flutter flutter-dependencies

我已经在波动中实现了webView,但是它并没有打开我在服务器上做错的php网站。

我是新手,并尝试使用webview将我的网站网页集成到我的应用程序中,但是没有运气。

Widget build(BuildContext context) {
    // TODO: implement build
    return WebviewScaffold(
      appBar: AppBar(iconTheme:IconThemeData(color: Colors.white),title: Text("Intake Form",style:new TextStyle(color: Colors.white,fontWeight: FontWeight.bold)),backgroundColor:Colors.indigoAccent,automaticallyImplyLeading: false),
     url: url,
      //url: "http://61.246.39.79:8080/",
       withJavascript: true,
       supportMultipleWindows: true,
      withLocalStorage: true,
      allowFileURLs: true,
      enableAppScheme: true,
      appCacheEnabled: true,
      hidden: false,
      scrollBar: true,
      geolocationEnabled: false,
      clearCookies: true,
       // usesCleartextTraffic="true"



    );
  }

我希望输出为运行的Webview,但会引发错误。

6 个答案:

答案 0 :(得分:23)

在Flutter项目的主目录中,有三个主文件夹:

- lib         =  your Dart code
- ios         =  generated structure for iOS platform
- android     =  generated structure for Android platform

我们对android目录感兴趣。 当您打开它时,您将看到“典型的Android应用程序结构”。

所以您必须做两件事:

1)在res

中添加新文件

转到目录:

my_flutter_project/android/app/src/main/res/

创建xml目录(在res中!)

xml内添加名称为network_security_config.xml和内容:

的新文件。
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
            <certificates src="user" />
        </trust-anchors>
    </base-config>
</network-security-config>

network_security_config.xml应该位于路径中:

my_flutter_project/android/app/src/main/res/xml/network_security_config.xml

network_security_config

在这里您可以找到有关此文件的更多信息:

https://developer.android.com/training/articles/security-config

2)修改AndroidManifest.xml

转到:

flutter_project/android/app/src/main/AndroidManifest.xml

enter image description here

AndroidManifest.xml是XML文件,其结构为:

<manifest>
    <application>
        <activity>
            ...
        </activity>
        <meta-data >
    </application>
</manifest>

因此,对于<application>属性,您必须添加1行:

android:networkSecurityConfig="@xml/network_security_config"

enter image description here

请记住,您必须将其添加为属性(在application开头标记内):

<application

    SOMEWHERE HERE IS OK

>

不作为标签:

<application>           <--- opening tag

    HERE IS WRONG!!!!

<application/>          <--- closing tag

答案 1 :(得分:1)

在您的AndroidManifest文件中,将usingCleartextTraffic属性设置为true,如下所示。

<application
....
android:usesCleartextTraffic="true"
....>

答案 2 :(得分:0)

打开android清单文件(android / app / src / main / AndroidManifest.xml)并添加

android:usesCleartextTraffic =“ true”

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

答案 3 :(得分:0)

在AndroidManifest.xml中,将[<input type="text" autocomplete="off" class="form-control" name="Personal_Weapons_Price" id="Personal_Weapons_Price" required pattern="^(\d+|NA|na)$" /> ]添加为

android:usesCleartextTraffic="true"

它无法在android 9中运行

答案 4 :(得分:0)

  • 制作network_security_config.xml文件。

<?xml version="1.0" encoding="utf-8"?>
        <network-security-config>
            <base-config cleartextTrafficPermitted="true">
                <trust-anchors>
                    <certificates src="system" />
                </trust-anchors>
            </base-config>
        </network-security-config>

enter image description here

  • 在Application标记的清单文件中添加这两行。

答案 5 :(得分:0)

对于ios修改info.plist ./ios/Runner/info.plist

添加以下内容:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

并在再次启动应用程序之前运行 flutter clean