Last updated:
0 purchases
internet connection checker plus
Internet Connection Checker Plus #
A Flutter package to check your internet connection with subsecond response
times, even on mobile networks!
This library provides functionality to monitor and verify internet connectivity
by checking reachability to various Uris. It relies on the connectivity_plus
package for listening to connectivity changes and the http package for making
network requests.
Features #
Check internet connectivity status
Listen for internet connectivity changes
Supported Platforms #
Platform
Check Connectivity
Listen for Changes
Android
✅
✅
iOS
✅
✅
macOS
✅
✅
Linux
✅
✅
Windows
✅
✅
Web
✅
✅
Permissions #
Android #
Add the following permissions to your AndroidManifest.xml file:
<uses-permission android:name="android.permission.INTERNET" />
copied to clipboard
macOS #
Add the following permissions to your macOS .entitlements files:
<key>com.apple.security.network.client</key>
<true/>
copied to clipboard
For more information, see the Flutter Networking Documentation.
Usage #
1. Add dependency #
Add the internet_connection_checker_plus package to your pubspec.yaml file:
dependencies:
internet_connection_checker_plus: ^2.5.1
copied to clipboard
2. Import the package #
Import the internet_connection_checker_plus package into your Dart file:
import 'package:internet_connection_checker_plus/internet_connection_checker_plus.dart';
copied to clipboard
3. Checking for internet connectivity #
The simplest way to check for internet connectivity is to use the
InternetConnection class:
bool result = await InternetConnection().hasInternetAccess;
copied to clipboard
4. Listening for internet connectivity changes #
The InternetConnection class also provides a stream of InternetStatus that
can be used to listen for changes in internet connectivity:
final listener = InternetConnection().onStatusChange.listen((InternetStatus status) {
switch (status) {
case InternetStatus.connected:
// The internet is now connected
break;
case InternetStatus.disconnected:
// The internet is now disconnected
break;
}
});
copied to clipboard
Don't forget to cancel the subscription when it is no longer needed.
This will prevent memory leaks and free up resources:
listener.cancel();
copied to clipboard
5. Add custom Uris to check #
The InternetConnection class can be configured to check custom Uris for
internet connectivity:
final connection = InternetConnection.createInstance(
customCheckOptions: [
InternetCheckOption(uri: Uri.parse('https://example.com')),
],
);
copied to clipboard
Note
Make sure the custom Uris have no caching enabled. Otherwise, the results
may be inaccurate.
Note
On web platform, make sure the custom Uris are not CORS blocked.
Otherwise, the results may be inaccurate.
6. Add custom success criteria #
The InternetConnection class can be configured to check custom Uris for
internet connectivity using custom success criteria:
final connection = InternetConnection.createInstance(
customCheckOptions: [
InternetCheckOption(
uri: Uri.parse('https://example.com'),
responseStatusFn: (response) {
return response.statusCode >= 69 && response.statusCode < 169;
},
),
InternetCheckOption(
uri: Uri.parse('https://example2.com'),
responseStatusFn: (response) {
return response.statusCode >= 420 && response.statusCode < 1412;
},
),
],
);
copied to clipboard
Default Uris
The InternetConnection class uses the following Uris by default:
URI
Description
https://one.one.one.one
Response time is less than 100ms, CORS enabled, no-cache
https://icanhazip.com
Response time is less than 100ms, CORS enabled, no-cache
https://jsonplaceholder.typicode.com/todos/1
Response time is less than 100ms, CORS enabled, no-cache
https://reqres.in/api/users/1
Response time is less than 100ms, CORS enabled, no-cache
Some Tested URIs
URI
Description
https://ipapi.co/ip
CORS enabled, no-cache
https://api.adviceslip.com/advice
CORS enabled, no-cache
https://api.bitbucket.org/2.0/repositories
CORS enabled, no-cache
https://api.thecatapi.com/v1/images/search
CORS enabled, no-cache
https://api.coindesk.com/v1/bpi/currentprice.json
CORS enabled, no-cache
https://lenta.ru
Russia supported, CORS enabled, no-cache
https://www.gazeta.ru
Russia supported, CORS enabled, no-cache
If you liked the package, then please give it a Like 👍🏼 and Star ⭐ #
Credits #
This package is a cloned and modified version of the
internet_connection_checker package which is a cloned and modified version of
the data_connection_checker package which is no longer maintained.
The aim of this package is to support the web platform which is currently not
supported by the internet_connection_checker package.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.