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

 更新时间:2023年06月27日 10:02:41   作者:会煮咖啡的猫  
这篇文章主要为大家介绍了Flutter检查连接网络connectivity_plus实现步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

前言

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

我推荐使用 connectivity_plus

https://pub-web.flutter-io.cn/packages/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的资料请关注脚本之家其它相关文章!

相关文章

  • Android-Zxing实现二维码的扫描与生成

    Android-Zxing实现二维码的扫描与生成

    本文主要介绍了Android中Zxing实现二维码的扫描与生成的方法,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • 直接应用项目中的Android图片缓存技术

    直接应用项目中的Android图片缓存技术

    这篇文章主要为大家详细介绍了直接应用项目中的Android图片缓存技术,简单、方便、高效,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • Android中GIF动图的播放控制和监听详解

    Android中GIF动图的播放控制和监听详解

    android下播放gif图片功能似乎并不常用,很多时候还是以展示静态图片为主,可能是由于gif图体积比较大吧。不过像表情动画什么的,可能还是需要gif图的。本文主要给大家介绍了关于Android中GIF动图的播放控制和监听的相关资料,需要的朋友可以参考下。
    2017-05-05
  • Android中handler使用浅析

    Android中handler使用浅析

    本文主要介绍了Android中handler的使用,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • 手机方向传感器的缺点及解决方法探究

    手机方向传感器的缺点及解决方法探究

    今天小编就为大家分享一篇关于手机方向传感器的缺点及解决方法探究,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Android如何通过命令行操作Sqlite3数据库的方法

    Android如何通过命令行操作Sqlite3数据库的方法

    这篇文章主要介绍了Android如何通过命令行操作Sqlite3数据库的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • android中Handle类的用法实例分析

    android中Handle类的用法实例分析

    这篇文章主要介绍了android中Handle类的用法,以实例形式较为详细的分析了基于Handle类线程执行的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • Android计时器的三种实现方式(Chronometer、Timer、handler)

    Android计时器的三种实现方式(Chronometer、Timer、handler)

    这篇文章主要介绍了Android计时器的三种实现方式,Chronometer、Timer、handler计时器的实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Android进阶CoordinatorLayout协调者布局实现吸顶效果

    Android进阶CoordinatorLayout协调者布局实现吸顶效果

    这篇文章主要为大家介绍了Android进阶CoordinatorLayout协调者布局实现吸顶效果,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Android自定义控件之广告条滚动效果

    Android自定义控件之广告条滚动效果

    这篇文章主要为大家详细介绍了Android自定义控件之广告条滚动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-06-06

最新评论