How Do I Check Internet Connectivity Using Http Requests(flutter/dart)?
Solution 1:
You should surround it with try catch block, like so:
import 'package:http/http.dart'as http;
int timeout = 5;
try {
http.Response response = await http.get('someUrl').
timeout(Duration(seconds: timeout));
if (response.statusCode == 200) {
// do something
} else {
// handle it
}
} on TimeoutException catch (e) {
print('Timeout Error: $e');
} on SocketException catch (e) {
print('Socket Error: $e');
} on Error catch (e) {
print('General Error: $e');
}
Socket exception will be raised immediately if the phone is aware that there is no connectivity (like both WiFi and Data connection are turned off).
Timeout exception will be raised after the given timeout, like if the server takes too long to reply or users connection is very poor etc.
Also don't forget to handle the situation if the response code isn't = 200.
Solution 2:
You don't need to use http to check the connectivity yourself, simply use connectivity library
Solution 3:
You can use this plugin https://pub.dev/packages/data_connection_checker
So you can check prior if you have the connection, if not give a alert to the user that no internet connection. And if you have the internet connection then just proceed to your fetching part.
I will just link some resources below where it has been explained perfectly:
https://www.youtube.com/watch?v=u_Xyqo6lhFE
This is all things will be done prior to making an http call, but what if while making an http call the internet goes off then you can use the try catch block which @uros has mentioned.
Let me know if it works.
Solution 4:
This is my approach to check internet connection to check internet connection throughout full app
i create a common class called "connectivity" & use it everywhere in app to check connectivity.i use connectivity package by flutter.
My connectivity class
Future<bool> check() async {
var connectivityResult = await (Connectivity().checkConnectivity());
if (connectivityResult == ConnectivityResult.mobile) {
returntrue;
} elseif (connectivityResult == ConnectivityResult.wifi) {
returntrue;
}
returnfalse;
}
then i use this class like this:
@override
void initState() {
super.initState();
checkInternetConnection().then((internet) {
if (internet != null && internet) {
// Internet Present Case// do your task;
} else {
// No-Internet CaseshowAlertDialog(context);
}
});
}
Post a Comment for "How Do I Check Internet Connectivity Using Http Requests(flutter/dart)?"