import 'dart:async'; import 'package:connectivity_plus/connectivity_plus.dart'; /// Service for monitoring network connectivity status class NetworkService { static final NetworkService _instance = NetworkService._internal(); factory NetworkService() => _instance; NetworkService._internal(); final Connectivity _connectivity = Connectivity(); final StreamController _connectionController = StreamController.broadcast(); Stream get connectionStream => _connectionController.stream; bool _isConnected = true; bool get isConnected => _isConnected; /// Initialize the network service and start monitoring void initialize() { _connectivity.onConnectivityChanged.listen((List results) { final result = results.isNotEmpty ? results.first : ConnectivityResult.none; _isConnected = result != ConnectivityResult.none; _connectionController.add(_isConnected); }); // Check initial state _checkConnection(); } Future _checkConnection() async { final results = await _connectivity.checkConnectivity(); final result = results.isNotEmpty ? results.first : ConnectivityResult.none; _isConnected = result != ConnectivityResult.none; _connectionController.add(_isConnected); } void dispose() { _connectionController.close(); } }