34 lines
1.3 KiB
Dart
34 lines
1.3 KiB
Dart
import 'package:connectivity_plus/connectivity_plus.dart';
|
|
|
|
/// Service for monitoring internet connectivity status
|
|
///
|
|
/// Wraps the connectivity_plus package and provides a simple stream
|
|
/// of online/offline status as boolean values.
|
|
class ConnectivityService {
|
|
final Connectivity _connectivity;
|
|
|
|
ConnectivityService({Connectivity? connectivity})
|
|
: _connectivity = connectivity ?? Connectivity();
|
|
|
|
/// Stream that emits true when online, false when offline
|
|
///
|
|
/// This stream will emit a new value whenever the connectivity status changes.
|
|
/// Note: This checks for network connectivity, not actual internet access.
|
|
Stream<bool> get connectivityStream {
|
|
return _connectivity.onConnectivityChanged.map((results) {
|
|
// connectivity_plus now returns List<ConnectivityResult>
|
|
// Check if any result is not 'none'
|
|
return results.isNotEmpty &&
|
|
!results.every((result) => result == ConnectivityResult.none);
|
|
});
|
|
}
|
|
|
|
/// Check current connectivity status (one-time check)
|
|
///
|
|
/// Returns true if device has network connectivity, false otherwise.
|
|
Future<bool> isConnected() async {
|
|
final results = await _connectivity.checkConnectivity();
|
|
return results.isNotEmpty &&
|
|
!results.every((result) => result == ConnectivityResult.none);
|
|
}
|
|
}
|