// lib/data/providers/connectivity_provider.dart import 'dart:async'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:get/get.dart'; import 'package:flutter/material.dart'; class ConnectivityProvider extends GetxService { final Connectivity _connectivity = Connectivity(); final RxBool isOnline = false.obs; late StreamSubscription> _connectivitySubscription; @override void onInit() { super.onInit(); _initConnectivityListener(); } @override void onClose() { _connectivitySubscription.cancel(); super.onClose(); } Future _initConnectivityListener() async { _connectivitySubscription = _connectivity.onConnectivityChanged.listen(( results, ) { final isConnected = results.any( (result) => result == ConnectivityResult.mobile || result == ConnectivityResult.wifi || result == ConnectivityResult.ethernet, ); isOnline.value = isConnected; if (isConnected) { Get.snackbar( '网络状态', '已连接到网络', colorText: Colors.white, backgroundColor: Colors.green, snackPosition: SnackPosition.TOP, ); } else { Get.snackbar( '网络状态', '已断开网络连接', colorText: Colors.white, backgroundColor: Colors.red, snackPosition: SnackPosition.TOP, ); } }); final initialResults = await _connectivity.checkConnectivity(); isOnline.value = initialResults.any( (result) => result == ConnectivityResult.mobile || result == ConnectivityResult.wifi || result == ConnectivityResult.ethernet, ); } }