Wi-Fi Status (wifi_status)
A fast, lightweight, and feature-rich Flutter package to check Wi-Fi connection status and monitor network connectivity changes in real-time.
Features
- ๐ถ Wi-Fi & Network Status Check: Instantly check if the device is connected to Wi-Fi, Mobile Data, or Disconnected.
- โก Real-Time Stream Monitoring: Listen to connectivity updates as they happen with
onStateChanged. - ๐ฏ Strongly Typed
WifiStateEnum: Type-safe connection states (connected,disconnected,mobileData,other,unknown) with helper getters (.isWifi,.isMobile,.isConnected). - ๐งฉ UI Helper Widgets:
WifiStatusBuilder: Automatically rebuilds UI when connectivity updates.WifiStatusListener: Triggers side-effect callbacks (onConnected,onDisconnected) without rebuilding widgets.WifiStatusIcon&WifiStatusBanner: Plug-and-play UI widgets.
- ๐งช 100% Mockable & Testable: Pass custom
Connectivityproviders for unit testing. - ๐ Backward Compatible: Supports legacy
WifiStatus.getWifiStatus()string methods.
Installation
Add wifi_status to your pubspec.yaml:
dependencies:
wifi_status: ^0.1.0
Or run:
flutter pub add wifi_status
Platform Setup
Android Setup
Add network state permissions inside <manifest> in android/app/src/main/AndroidManifest.xml:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
iOS Setup
No special permissions required for basic Wi-Fi status check.
Usage Guide
1. One-Time Connection Check
import 'package:wifi_status/wifi_status.dart';
// Check typed state
WifiState state = await WifiStatus.checkState();
if (state.isWifi) {
print('Connected to Wi-Fi!');
} else if (state.isMobile) {
print('Using Mobile Data');
} else if (state.isDisconnected) {
print('No network connection');
}
// Or check boolean directly
bool isWifi = await WifiStatus.isWifiConnected();
2. Live Stream Listener
Listen to network connectivity updates in real-time:
// Stream emitting WifiState
WifiStatus.onStateChanged.listen((WifiState state) {
print('Current connection state: ${state.label}');
});
// Stream emitting boolean (Wi-Fi connected or not)
WifiStatus.onWifiConnectedChanged.listen((bool isConnected) {
print('Wi-Fi active: $isConnected');
});
3. Reactive UI with WifiStatusBuilder
Rebuild UI automatically whenever Wi-Fi status changes:
WifiStatusBuilder(
builder: (context, WifiState state) {
if (state.isWifi) {
return Text('Connected to Wi-Fi', style: TextStyle(color: Colors.green));
} else {
return Text('Not on Wi-Fi (${state.label})', style: TextStyle(color: Colors.red));
}
},
)
4. Side Effects with WifiStatusListener
Trigger SnackBars or dialogs when status changes:
WifiStatusListener(
onConnected: () {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Connected to Wi-Fi!'), backgroundColor: Colors.green),
);
},
onDisconnected: () {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Disconnected from Wi-Fi!'), backgroundColor: Colors.red),
);
},
child: MyScreenBody(),
)
5. Plug-and-Play UI Widgets
// Wi-Fi Icon that updates automatically
WifiStatusIcon(size: 28)
// Status Banner widget
WifiStatusBanner()
Unit Testing
You can mock Connectivity using dependency injection:
final mockConnectivity = MyMockConnectivity();
final wifiStatus = WifiStatus(connectivity: mockConnectivity);
WifiState state = await wifiStatus.getState();
License
This project is licensed under the MIT License - see the LICENSE file for details.
Libraries
- wifi_status
- A Flutter package to check Wi-Fi connection status and monitor connection changes in real-time.