乐趣区

关于程序员:Flutter-检查连接网络-connectivityplus

Flutter 查看连贯网络 connectivity_plus

<img src=”https://ducafecat.oss-cn-beijing.aliyuncs.com/podcast/2023/06/6180be60f9bc9ea6eb648c500268085c.jpeg” style=”width:90%;” />

前言

有些对通信敏感的程序,咱们须要查看以后连贯的网络状况。

我举荐应用 connectivity_plus

https://pub-web.flutter-io.cn/packages/connectivity_plus

这个插件的益处就是反对全平台,这点十分好。

咱们明天来写一个例子尝试下这个性能。

这个插件遇到获取状态不对,请用真机调试,模拟器可能有偏差。

<img src=”https://ducafecat.oss-cn-beijing.aliyuncs.com/podcast/2023/06/3bdc337cd941981e81a2f01c5554003d.png” style=”width:50%;” />

步骤

第一步:配置依赖包

pubspec.yaml

dependencies:
  flutter:
    sdk: flutter


  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^1.0.2

  connectivity_plus: ^4.0.1

第二步:批改 android 最小编译版本

android/app/build.gradle

改成·minSdkVersion 19

android {
    ...

    defaultConfig {
        
        applicationId "com.example.flutter_application_connectivity"
        
        minSdkVersion 19 //flutter.minSdkVersion
        
          targetSdkVersion flutter.targetSdkVersion
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }

第三步:查看网路连贯代码

lib/connectivity.dart

定义 Connectivity 对象

class _ConnectivityPageState extends State<ConnectivityPage> {
  // Connectivity 对象
  final Connectivity _connectivity = Connectivity();

音讯订阅 StreamSubscription

  // 音讯订阅
  late StreamSubscription<ConnectivityResult> _subscription;

返回状态保留

  // 初始返回的网络状态
  ConnectivityResult? _connectivityStatus;

初始化,单次查看形式

  // 初始化
  Future<void> _init() async {
    try {
      // 形式 1:单次申请查看
      final connectivityResult = await _connectivity.checkConnectivity();
      _updateConnectionStatus(connectivityResult);
    } on PlatformException catch (e) {print(e);
      print('连贯网络呈现了异样');
    }
  }

订阅形式

  // 初始化
  Future<void> _init() async {
    try {
      // 形式 1:单次申请查看
      // final connectivityResult = await _connectivity.checkConnectivity();
      // _updateConnectionStatus(connectivityResult);

      // 形式 2:状态订阅
      _subscription =
          _connectivity.onConnectivityChanged.listen(_updateConnectionStatus);
    } on PlatformException catch (e) {print(e);
      print('连贯网络呈现了异样');
    }
  }

更新订阅状态

  Future<void> _updateConnectionStatus(ConnectivityResult result) async {setState(() {_connectivityStatus = result;});

    if (result == ConnectivityResult.mobile) {print('胜利连贯挪动网络');
    } else if (result == ConnectivityResult.wifi) {print('胜利连贯 WIFI');
    } else if (result == ConnectivityResult.ethernet) {print('胜利连贯到以太网');
    } else if (result == ConnectivityResult.vpn) {print('胜利连贯 vpn 网络');
    } else if (result == ConnectivityResult.bluetooth) {print('胜利连贯蓝牙');
    } else if (result == ConnectivityResult.other) {print('胜利连贯除以上以外的网络');
    } else if (result == ConnectivityResult.none) {print('没有连贯到任何网络');
    }
  }

初始 initState

  @override
  void initState() {super.initState();
    _init();}

开释 dispose,敞开订阅

  @override
  void dispose() {_subscription.cancel();
    super.dispose();}

视图

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('网路连贯查看'),
      ),
      body: Center(
        child: Column(
          children: [const Text('状态'),
            Text(_connectivityStatus?.toString() ?? "未知"),
          ],
        ),
      ),
    );
  }

代码

https://github.com/ducafecat/flutter_develop_tips/tree/main/flutter_application_connectivity

小结

connectivity_plus 是一个 Flutter 插件,用于检测设施的网络连接状态。它能够检测设施是否连贯到互联网,以及连贯类型是 Wi-Fi、蜂窝数据还是无网络连接。这个插件的作用和重要性在于:

  1. 提供了一种简略、牢靠的办法来检测设施的网络连接状态,不便开发者编写更智能的应用程序。
  2. 让应用程序能够依据设施的网络连接状态来调整其行为,例如依据网络情况抉择适合的数据加载形式、调整 UI 布局等。
  3. 反对多种平台,包含 Android、iOS、macOS 和 Windows,能够轻松地在不同平台上进行开发和测试。

总之,connectivity_plus 插件是一个十分有用和重要的工具,能够帮忙开发者编写更智能、更适应用户需要的应用程序。

感激浏览本文

如果我有什么错?请在评论中让我晓得。我很乐意改良。


© 猫哥
ducafecat.com

end

本文由 mdnice 多平台公布

退出移动版