import 'dart:async'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; /// Provider qui retourne un booléen: connecté ou non final isConnectedProvider = StateNotifierProvider( (ref) => ConnectivityBoolNotifier(), ); class ConnectivityBoolNotifier extends StateNotifier { ConnectivityBoolNotifier() : super(false) { _init(); _subscription = Connectivity().onConnectivityChanged.listen( (results) => state = _isConnected(results), ); } late final StreamSubscription> _subscription; Future _init() async { final result = await Connectivity().checkConnectivity(); state = _isConnected(result); } bool _isConnected(List result) { return (result).contains(ConnectivityResult.mobile) || (result).contains(ConnectivityResult.wifi) || (result).contains(ConnectivityResult.vpn) || (result).contains(ConnectivityResult.ethernet); } @override void dispose() { _subscription.cancel(); super.dispose(); } }