worldhopper/lib/services/connectivity_service.dart
Felipe M. 64eee6b81b
feat: implement internet connectivity tracking with offline indicators
Adds real-time connectivity monitoring and visual feedback across the app. Offline icon appears in all app bars when disconnected, cached content shows download badges, and access control prevents browsing servers or opening uncached content without internet connection.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-28 20:13:21 +01:00

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);
}
}