Skip to content

sabeelmuttil/connectivity_validator

Repository files navigation

connectivity_validator

pub package pub points CI

Flutter plugin for validated internet connectivity: real internet access, not just “network connected.” Detects captive portals and router-without-internet. Stream-based, Android & iOS.

Features

  • Validated connectivity (real internet, not only link up)
  • Captive portal and “WiFi on, no internet” detection
  • Real-time stream (onConnectivityChanged)
  • Android (API 24+) and iOS (12.0+)

Installation

pubspec.yaml

dependencies:
  connectivity_validator: ^0.0.6
flutter pub get

Platform setup

Android — Add to AndroidManifest.xml if needed:

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

iOS

  • Swift Package Manager (default) — No extra setup. Flutter uses SPM for the plugin.
  • CocoaPods — If your project uses CocoaPods for this plugin, run in the project root:
    cd ios && pod install && cd ..

Usage

import 'package:connectivity_validator/connectivity_validator.dart';

final validator = ConnectivityValidator();

validator.onConnectivityChanged.listen((isOnline) {
  if (isOnline) {
    // Internet validated
  } else {
    // No internet or captive portal
  }
});

Get initial state and listen to changes:

final validator = ConnectivityValidator();

// Get initial state
final initialStatus = await validator.onConnectivityChanged.first;
print('Initial status: ${initialStatus ? "Online" : "Offline"}');

// Listen to changes
validator.onConnectivityChanged.listen((isOnline) {
  print('Connectivity changed: ${isOnline ? "Online" : "Offline"}');
});

Live status (stream) + manual check (on-demand):

final validator = ConnectivityValidator();

// Live updates
validator.onConnectivityChanged.listen((isOnline) => /* update UI */);

// On-demand check (e.g. button tap)
final isOnline = await validator.getConnectivityStatus;

In UI (e.g. StreamBuilder):

StreamBuilder<bool>(
  stream: ConnectivityValidator().onConnectivityChanged,
  initialData: false,
  builder: (context, snapshot) {
    final isOnline = snapshot.data ?? false;
    return Text(isOnline ? 'Online' : 'Offline');
  },
)

Run the example:

cd example && flutter pub get && flutter run

Documentation

Contributing

Contributions welcome. See the GitHub repo.

License

See LICENSE.

About

A Flutter package that provides validated internet connectivity status

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors