Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Flutter : Handling Error SocketException: Connection failed (OS Error: Network is unreachable, errno = 101)

Tags:

flutter

dart

No Connection I have a problem handling the error SocketException: Connection failed (OS Error: Network is unreachable, errno = 101) address = 192.168.43.159, port = 80.

What I already did :

Setting Android Permission Internet.

My Reference Making Network http error SocketException: Failed host lookup

<uses-permission android:name="android.permission.INTERNET"/>

Make function with try catch to handling this error

It's API function

Future loginMahasiswa(body) async {
    try {
      var apiRespon = await http.post('$baseURL/mahasiswa/login',
          body: body, headers: CrudComponent.headers);
      int statusCode = apiRespon.statusCode;
      if (statusCode == 200) {
        final apiResponJson = json.decode(apiRespon.body);
        print('Success Load Data Json ($apiResponJson)');
        return apiResponJson;
      } else {
        final apiResponJson = json.decode(apiRespon.body);
        print('fail Load Data Json $apiResponJson');
        return apiResponJson;
      }
    } catch (e) {
      print(e);
      return null;
    }
  }

It's Button Function

  void _loginMahasiswa() async {
    SharedPreferences preferences = await SharedPreferences.getInstance();
    try {
      final body = {"email": _txtEmail.text, "password": _txtPassword.text};
      var loginMahasiswa = await api.loginMahasiswa(body);
      String message = loginMahasiswa['message'];
      var dataUser = loginMahasiswa['data'];
      // String idUser = dataUser[0]['id_user'] ?? "null";
      if (loginMahasiswa['status'] == true) {
        setState(() {
          preferences.setString('token', dataUser[0]['username']);
          Navigator.of(context).pushAndRemoveUntil(
              PageTransition(
                  type: PageTransitionType.rightToLeftWithFade,
                  child: HomePage()),
              (Route<dynamic> route) => false);
        });
      } else {
        print(message);
        _showSnackBar(context, message, Colors.red);
      }
    } on SocketException catch (_) {
      //throw ("No connection Internet");
       _showSnackBar(context, 'no connection', Colors.orange);
    }
  }

But my Snackbar does not show an error no connection if I click the button.

I'm using a real device to run my app and I purposely turn off the hotspot to test my app not connected to the server. No Connection Image

like image 673
Zeffry Reynando Avatar asked Sep 19 '25 15:09

Zeffry Reynando


1 Answers

  1. Make sure you are online, you are connected to internet whether it is mobile or emulator

  2. Make sure you have given internet permission in your app's android/app/src/main/AndroidManifest.xml

    <uses-permission android:name="android.permission.INTERNET" />
    
like image 136
Ishwar Chandra Tiwari Avatar answered Sep 21 '25 05:09

Ishwar Chandra Tiwari