目录
  • 前言
  • 步骤
    • 第一步:配置依赖包
    • 第二步:修改 android 最小编译版本
    • 第三步:检查网路连接代码
  • 小结

    前言

    有些对通讯敏感的程序,我们需要检查当前连接的网络情况。

    我推荐使用 connectivity_plus

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

    这个插件的好处就是支持全平台,这点非常好。

    我们今天来写一个例子尝试下这个功能。

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

    Flutter检查连接网络connectivity_plus实现步骤

    步骤

    第一步:配置依赖包

    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() ?? "未知"),
              ],
            ),
          ),
        );
      }

    代码

    小结

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

    • 提供了一种简单、可靠的方法来检测设备的网络连接状态,方便开发者编写更智能的应用程序。
    • 让应用程序可以根据设备的网络连接状态来调整其行为,例如根据网络状况选择合适的数据加载方式、调整 UI 布局等。
    • 支持多种平台,包括 Android、iOS、macOS 和 Windows,可以轻松地在不同平台上进行开发和测试。

    总之,connectivity_plus 插件是一个非常有用和重要的工具,可以帮助开发者编写更智能、更适应用户需求的应用程序。

    以上就是Flutter检查连接网络connectivity_plus实现步骤的详细内容,更多关于Flutter connectivity_plus的资料请关注其它相关文章!

    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。