internetStatusStreamProvider top-level property
Provides the current internet connection status as a stream. Uses Connectivity plus InternetConnectionChecker for accurate status.
Implementation
final internetStatusStreamProvider = StreamProvider<ConnectionStatus>((ref) {
final controller = StreamController<ConnectionStatus>();
final checker = InternetConnectionChecker.instance;
Future<void> updateStatus() async {
final hasInternet = await checker.hasConnection;
controller.add(
hasInternet ? ConnectionStatus.connected : ConnectionStatus.disconnected,
);
}
// Initial check
updateStatus();
// Listen to connectivity changes and update status accordingly
final sub = Connectivity().onConnectivityChanged.listen((_) {
updateStatus();
});
ref.onDispose(() {
sub.cancel();
controller.close();
});
return controller.stream;
});