network_service.dart 802 B

1234567891011121314151617181920212223242526272829
  1. import 'package:connectivity_plus/connectivity_plus.dart';
  2. import '../constants/app_enum.dart';
  3. class NetworkService {
  4. final Connectivity _connectivity = Connectivity();
  5. Stream<NetworkStatus> watchNetwork() async* {
  6. // 初始状态
  7. final initial = await _connectivity.checkConnectivity();
  8. yield _map(initial);
  9. // 持续监听
  10. await for (final result
  11. in _connectivity.onConnectivityChanged) {
  12. yield _map(result);
  13. }
  14. }
  15. NetworkStatus _map(List<ConnectivityResult> results) {
  16. // 优先返回 wifi,其次是 mobile,最后是 none
  17. if (results.contains(ConnectivityResult.wifi)) {
  18. return NetworkStatus.wifi;
  19. }
  20. if (results.contains(ConnectivityResult.mobile)) {
  21. return NetworkStatus.mobile;
  22. }
  23. return NetworkStatus.none;
  24. }
  25. }