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.
- 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)
- 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 |
|---|---|
| Android | ✅ Full support (API 23+) |
| iOS | getActiveNetworks only) |
dependencies:
connectivity_control: ^0.0.2flutter pub getimport 'package:connectivity_control/connectivity_control.dart';final networks = await ConnectivityControl().getActiveNetworks();
print(networks);On iOS, this is currently the only supported API.
ConnectivityControl().listenToActiveNetworks().listen((networks) {
print(networks);
});
⚠️ Field availability depends on platform.
typehasInternetisValidatedisMetereddownLinkKbpsupLinkKbps
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.