// lib/data/providers/connectivity_provider.dart import 'dart:async'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:get/get.dart'; class NetworkStatusService extends GetxService { final Connectivity _connectivity = Connectivity(); final RxBool isOnline = false.obs; StreamSubscription>? _connectivitySubscription; @override void onInit() { super.onInit(); _initConnectivityListener(); _checkInitialConnectivity(); } @override void onClose() { _connectivitySubscription?.cancel(); super.onClose(); } void _initConnectivityListener() { _connectivitySubscription = _connectivity.onConnectivityChanged.listen(( results, ) { isOnline.value = _isConnected(results); // UI 层监听 isOnline.value 变化后自行处理提示 }); } Future _checkInitialConnectivity() async { final initialResults = await _connectivity.checkConnectivity(); isOnline.value = _isConnected(initialResults); } bool _isConnected(List results) { return results.any( (result) => result == ConnectivityResult.mobile || result == ConnectivityResult.wifi || result == ConnectivityResult.ethernet, ); } }