Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to solve insecure http not allowed by platform flutter?

I am trying to fetch some data from my custom made rest api and i am having a lot of trouble with this error. I even tried the google official migration guide.

import 'package:flutter/material.dart';
import 'dart:convert';
import 'package:http/http.dart' as http;

class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  String PROTOCOL = "http";
  String DOMAIN = "192.168.0.5:5000";

  Future<List<dynamic>> fetchUsers() async {
    var url = "$PROTOCOL://$DOMAIN/posts";
    var result = await http.get(url);
    print(result);
    return json.decode(result.body);
  }

  @override
  Widget build(BuildContext context) {
    fetchUsers();
    return Scaffold(
      appBar: AppBar(),
      body: Container(
        child: FutureBuilder<List<dynamic>>(
          future: fetchUsers(),
          builder: (BuildContext context, AsyncSnapshot snapshot) {
            if (snapshot.hasData) {
              return ListView.builder(
                itemBuilder: (BuildContext context, int index) {
                  return Text(snapshot.data[index]['description']);
                },
                itemCount: snapshot.data.length,
              );
            } else
              return Container();
          },
        ),
      ),
    );

My server is up and running and working good with postman but facing troubles with flutter.Need some serious help here!

like image 415
Himanshu Ranjan Avatar asked Nov 26 '25 09:11

Himanshu Ranjan


1 Answers

Add these lines to activity tag of AndroidManifest.xml

 android:usesCleartextTraffic="true"
 android:networkSecurityConfig="@xml/network_security_resource"

In res, create a new folder named xml in res folder

Create a new xml file named network_security_resource.xml in xml folder

Add the below code to it-

<?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>

Then follow the steps given here https://flutter.dev/docs/release/breaking-changes/network-policy-ios-android https://developer.android.com/training/articles/security-config

If the above steps does not work. Try changing flutter branch and upgrade it.

I did both the things and now its working. I am on Flutter 1.22.0 • channel stable

like image 194
Sarthak Singhal Avatar answered Nov 27 '25 23:11

Sarthak Singhal



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!