ac_inet_connectivity_checker 0.1.2 copy "ac_inet_connectivity_checker: ^0.1.2" to clipboard
ac_inet_connectivity_checker: ^0.1.2 copied to clipboard

outdated

A simple stateless Internet connectivity checker which do not depend on any protocol

A simple stateless Internet Connectivity Checker #

An Internet Connectivity Checker :

  • Which can test single or multiple endpoints (with configurable concurrency),
  • Which do not depends on any protocol (uses Dart's socket connection),
  • Which is cancellable and support both global and per endpoint timeouts,
  • Which keep it simple. It is stateless.

This package is not meant to be used with Flutter on the Web

If you search for a stateful Internet Connectivity Checker, check out these packages :

Usage #

Test on a single endpoint #

final checker = InetConnectivityChecker(
  endpoint: InetEndpoint(host: 'google.com', port: 443),
  // optional timeout. if unspecified the operating system 
  // default connect timeout will be used instead (~120s).
  timeout: const Duration(seconds: 10),
);

// tired of waiting?
// checker.cancel();

final isConnected = await checker.cancelableOperation.value;

Test on multiple endpoints #

final checker = InetConcurrentConnectivityChecker(
  endpoints: [
    InetEndpoint(host: '8.8.8.8', port: 53),
    InetEndpoint(host: 'google.com', port: 443),
    InetEndpoint(host: 'github.com', port: 443),
  ],
  
  // optional global timeout. 
  timeout: const Duration(seconds: 10),

  // optional per endpoint timeout. if unspecified the operating 
  // system default connect timeout will be used instead (~120s).
  timeoutPerEndpoint: const Duration(seconds: 10),

  // optionally, define the maximum concurrency (default is 2)
  maxConcurrency: 4,
);

final isConnected = await checker.cancelableOperation.value;

Which endpoints to use? #

If you want to test for an Internet connection, you might as well want to use the endpoints that are the less-likely to be down.

The plugin provides the list of all the IPv4 and IPv6 addresses for the root name servers.

Be-aware that it is more than likely that your application will have to be compatible with both IPv4-only and IPv6-only network. My advice is to mix and randomize those two lists and use the concurrent connectivity checker to test for an Internet connection.

final endpoints = [
  ...kRootNameServersIpV4Endpoints,
  ...kRootNameServersIpV6Endpoints,
]..shuffle();

Internet Connection Check for Flutter on the Web #

For testing Internet connection for Flutter Web, I recommended that you either use the connectivity_plus plugin :

import 'package:connectivity_plus/connectivity_plus.dart';

final result = await Connectivity().checkConnectivity();

if (result == ConnectivityResult.none) {
  // not connected to the Internet
} else {
  // connected to the Internet
}

Connectivity().onConnectivityChanged.listen((result) {
  // on connectivity changes
});

Or the ac_connectivity package which extend connectivity_plus with Internet connectivity on all platform :

import 'package:ac_connectivity/ac_connectivity.dart';

final cancelableOperation = Connectivity().checkInetConnectivityState(
  timeout: const Duration(seconds: 3),
);

final state = await cancelableOperation.value;

if (state == InetConnectivityState.disconnected) {
  // disconnected (same as ConnectivityResult.none)
} else if (state == InetConnectivityState.connected) {
  // connected to a network without Internet access.
} else if (state == InetConnectivityState.internet) {
  // connected to Internet.
}

Connectivity().listen((state) {
  // on Internet connectivity state changes
});
1
likes
0
points
89
downloads

Publisher

verified publisheranthonychampagne.fr

Weekly Downloads

A simple stateless Internet connectivity checker which do not depend on any protocol

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

async, freezed_annotation

More

Packages that depend on ac_inet_connectivity_checker