connectivity_control
A Flutter plugin that provides low-level, system-driven visibility into active network interfaces on a device.
Unlike basic connectivity checks, this plugin is designed to help apps understand, observe, and reason about multiple simultaneous networks (Wi-Fi, cellular, VPN, etc.) using native platform signals.
Features
Android (Full Support)
- Detect all active network interfaces
- Identify network type (Wi-Fi, cellular, VPN, etc.)
- Determine whether a network:
- Has internet capability
- Is validated by the system
- Is metered or unmetered
- Retrieve upstream and downstream bandwidth estimates
- Listen to real-time network changes via streams
- Native, event-driven implementation (no polling)
iOS (Partial Support)
- Retrieve currently active network interfaces via
getActiveNetworks
⚠️ Advanced network metadata and real-time streams are Android-only for now and will be introduced on iOS incrementally.
Platform Support
| Platform | Support |
|---|---|
| Android | ✅ Full support (API 23+) |
| iOS | ⚠️ Partial support (getActiveNetworks only) |
Installation
dependencies:
connectivity_control: ^0.0.2
flutter pub get
How to Use
import 'package:connectivity_control/connectivity_control.dart';
Get Active Networks (Android & iOS)
final networks = await ConnectivityControl().getActiveNetworks();
print(networks);
On iOS, this is currently the only supported API.
Listen to Network Changes (Android only)
ConnectivityControl().listenToActiveNetworks().listen((networks) {
print(networks);
});
NetworkInfo Fields
⚠️ Field availability depends on platform.
Android
typehasInternetisValidatedisMetereddownLinkKbpsupLinkKbps
iOS
typehasInternetisValidated- always null due to platform limitations.isMetered- always null due to platform limitations.downLinkKbps- always null due to platform limitations.upLinkKbps- always null due to platform limitations.