net_checker

pub version likes license

A lightweight and cross-platform Flutter package to check internet connectivity, monitor connection changes, measure latency, detect network quality, and identify working hosts.


Quick Example

final connected = await InternetChecker.hasConnection();

if (connected) {
  print("Connected");
} else {
  print("No Internet");
}

Features

Feature Supported
Internet connectivity check ✓
Real-time connection monitoring ✓
Network latency measurement ✓
Network quality detection ✓
Working host detection ✓
Custom host configuration ✓
UI widgets for connectivity status ✓
Cross-platform support ✓

Platform Support

Platform Supported Notes
Android ✓ Requires INTERNET permission
iOS ✓ No extra permission required
Web ✓ Limited by browser security (CORS)
Windows ✓ No extra setup
macOS ✓ No extra setup
Linux ✓ No extra setup

Why net_checker?

Unlike basic connectivity packages, net_checker provides:

  • Real internet access check (not just network type)
  • Built-in latency measurement
  • Network quality detection (Good / Poor / etc.)
  • Working host detection
  • Ready-to-use UI widgets

All in one lightweight package.


Installation

dependencies:
  net_checker: ^latest
flutter pub get

Import

import 'package:net_checker/net_checker.dart';

Check Internet Connection

bool connected = await InternetChecker.hasConnection();

Get Working Host

String? host = await InternetChecker.getWorkingHost();

Network Latency

int? latency = await LatencyChecker.getLatency();

Network Quality

String quality = await NetworkQuality.getQuality();

Listen to Connection Changes

InternetConnectionStream.start().listen((status) {
  print(status);
});

Custom Configuration

final config = InternetConfig(
  hosts: ["google.com", "cloudflare.com", "1.1.1.1"],
  timeout: Duration(seconds: 3),
  checkInterval: Duration(seconds: 5),
);

Usage with config

await InternetChecker.hasConnection(config: config);
await LatencyChecker.getLatency(config: config);
await NetworkQuality.getQuality(config: config);
await InternetChecker.getWorkingHost(config: config);

Widgets

Internet Status Indicator

InternetStatusIndicator()

Internet Status Builder

InternetStatusBuilder(
  builder: (context, status) {
    return Text(status.toString());
  },
)

No Internet Banner

NoInternetBanner(visible: true)

Use Cases

  • Show offline banner in apps
  • Retry API calls automatically
  • Monitor connection quality
  • Detect slow networks

Platform Configuration

Android

Add permission in android/app/src/main/AndroidManifest.xml:

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

iOS

No additional permission required.

If using network calls extensively, ensure App Transport Security allows your endpoints if needed:

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
</dict>

Web

  • Uses browser-based network detection
  • Subject to CORS and browser security restrictions
  • Connectivity checks may not fully match mobile/desktop behavior
  • Host verification and latency may be limited

Desktop (Windows / macOS / Linux)

No additional configuration required.


Best Practices

  • Use default configuration unless needed
  • Avoid very low checkInterval (e.g. < 2 seconds) as it may increase network usage
  • Use multiple hosts for reliability

Author

Developed and maintained by Lionheartapps
https://www.lionheartapps.com


Support the Project

If you find net_checker useful, you can support its development.

Buy Me A Coffee

License

MIT License

Screenshots

Connected Disconnected

Libraries

net_checker