web-dev-qa-db-fra.com

Comment réparer 'net :: ERR_CLEARTEXT_NOT_PERMITTED' en flutter

J'ai implémenté webView en flutter mais il n'ouvre pas mon site web php qui est sur le serveur ce que je fais mal.

Je suis nouveau dans le flottement et j'ai essayé la visualisation Web pour intégrer la page Web de mon site Web dans ma demande, mais pas de chance.

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://xxxxxxxx/",
       withJavascript: true,
       supportMultipleWindows: true,
      withLocalStorage: true,
      allowFileURLs: true,
      enableAppScheme: true,
      appCacheEnabled: true,
      hidden: false,
      scrollBar: true,
      geolocationEnabled: false,
      clearCookies: true,
       // usesCleartextTraffic="true"



    );
  }

Je m'attends à ce que la sortie soit en cours d'exécution, mais une erreur est levée.

6
Akash Agarwal

Dans le répertoire principal de votre projet Flutter, vous avez trois dossiers principaux:

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

Nous sommes intéressés par le répertoire Android. Lorsque vous l'ouvrez, vous verrez "typique Android structure de l'application".

Vous devez donc faire 2 choses:

1) Ajouter un nouveau fichier dans res

Accédez au répertoire:

my_flutter_project/Android/app/src/main/res/

Créez le répertoire xml (dans res!)

Et à l'intérieur de xml ajoutez un nouveau fichier avec le nom: network_security_config.xml et contenu:

<?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 doit se trouver dans le chemin:

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

network_security_config

Vous trouverez ici plus d'informations sur ce fichier:

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

2) Modifiez AndroidManifest.xml

Aller à:

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

enter image description here

AndroidManifest.xml est un fichier XML, avec une structure:

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

Donc pour <application> PROPRIÉTÉS vous devez ajouter 1 ligne:

Android:networkSecurityConfig="@xml/network_security_config"

enter image description here

N'oubliez pas que vous devez l'ajouter en tant que propriété (à l'intérieur de la balise d'ouverture application):

<application

    SOMEWHERE HERE IS OK

>

Pas comme balise:

<application>           <--- opening tag

    HERE IS WRONG!!!!

<application/>          <--- closing tag
1
Boken

Dans AndroidManifest.xml, ajoutez [Android:usesCleartextTraffic="true"] as

<application
    ......
    .......
    Android:usesCleartextTraffic="true"
    .............. >
    <.........
        ................... />

            ..........
    ...........>
</application>

cela ne fonctionne pas dans Android version 9

1
Sumon
  • créez le fichier 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

  • ajoutez ces deux lignes dans le fichier manifeste dans la balise Application.
0
Mihir Akoliya