Flutter 检查连接网络 connectivity_plus

这篇具有很好参考价值的文章主要介绍了Flutter 检查连接网络 connectivity_plus。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Flutter 检查连接网络 connectivity_plus

Flutter 检查连接网络 connectivity_plus,程序人生

前言

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

我推荐使用 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() ?? "未知"),
          ],
        ),
      ),
    );
  }

代码

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 多平台发布文章来源地址https://www.toymoban.com/news/detail-517019.html

到了这里,关于Flutter 检查连接网络 connectivity_plus的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Windows11连接共享打印机失败,提示以下错误:Windows 无法连接到打印机。请检查打打印机名并重试。如果这是网络打印机,请确保打印机已打开

    1.在确定打印机所在的主机是开机状态且局域网内其他电脑连接打印机正常情况下; 2.检查所需安装打印机的电脑打印服务运行状态; 2.1 按住Win+R键输入 services.msc 点击确 定后,打开服务; 2.2 Print Spooler、DCOM Server Process Launcher、RPC Endpoint Mapper,将其运行状态设置为自动启动

    2024年02月04日
    浏览(220)
  • Flutter编译报错Connection timed out: connect

    背景:用Android Studo 创建了Flutter项目,编译运行报错java.net.ConnectException: Connection timed out: connect 我自己的环境: windows11 Android Studio  Flutter 截图如下: 将错误日志展开之后: 得知是gradle报错。 解决办法: 法 一、 1、打开文件夹 C:Usershaipi.gradlewrapperdists 2、查看里面已经下

    2024年01月23日
    浏览(40)
  • microsoft store打开加载失败,显示检查连接

        如题所示,微软商店 microsoft store打开,页面显示空白,提示检查连接,如下所示:     这种问题其实是网络设置不正确,我们通过控制面板打开 网络和Internet设置- 网络和共享中心- Internet选项:切换到“高级”tab页,把 “使用TLS1.2” 选项选中即可,如下所示:     

    2024年02月16日
    浏览(45)
  • 【虚拟机】xshell连接虚拟机频繁显示连接超时的解决方式(之一):检查ip

    在确认虚拟机可以联网的前提下(在虚拟机终端内输入ifconfig后可以查看到虚拟机ip即是可以联网): 如果出现如下重复请求超时的情况,可以考虑检查虚拟机的ip; 先在Windows内使用win+r,输入cmd后进入命令窗口,在命令窗口中输入ipconfig后回车键,往下移动可找到虚拟机vm

    2024年02月14日
    浏览(44)
  • flutter项目下载gradle出现Connect timed out或Read timed out

    当出现Connect timed out或Read timed out这有两种情况的时候首先检查自己的网络情况    如果网络没有问题就进入项目的gradle文件的gradle-wrapper.properties中可以看到默认的 这个地址是需要魔法上网才能进行访问 。 所以我们可以切换为腾讯的国内镜像地址进行下载 腾讯的国内镜像:

    2024年01月19日
    浏览(47)
  • 花生壳-连接失败-请检查内网主机IP和端口

    很多人初玩花生壳内网穿透的时候,应该会遇到像我一样的问题。所以,记录一下,也使得大家少走弯路。这里我创建的是TCP通信协议应用。 1、 出现的问题是:请检查内网主机IP和端口。其实解决的方法很简单,只需要用网络调试助手开启TCP Sever就可以,主机地址和端口填

    2024年02月12日
    浏览(73)
  • Flutter中使用Overlay传入context提示:Null check operator used on a null value(对空值使用空检查运算符)

    首先此时使用的是GetX框架,框架截图如下: View中代码如下: logic代码 对Overlay的使用封装了一个单独的类PopToastManager(),PopToastManager()代码如下: 运行结果如下:  根据打印的语句可以得知,代码根本没有开始构建OverlayEntry(builder:(context){}) 查看错误,发现问题出现在对

    2024年02月03日
    浏览(37)
  • Linux机器网络检查

    dian@TestLRSSnapshot:~$ cat /etc/resolv.conf # This file is managed by man:systemd-resolved(8). Do not edit. # # This is a dynamic resolv.conf file for connecting local clients to the # internal DNS stub resolver of systemd-resolved. This file lists all # configured search domains. # # Run \\\"systemd-resolve --status\\\" to see details about the uplink DNS server

    2024年02月07日
    浏览(22)
  • Finalshell连接Linux超时之Connection timed out: connect

    BUG原因:每次重启finalshell 还是 CentOS,ip地址存在变化的可能 目录 🍉前言 🌼报错 🌼摸索 💪解决措施 (1)福利 :花了2小时才解决的BUG,希望本篇文章能帮你10分钟解决! (2)tips :ipconfig或ip addr,以及,vim或vi,不同的操作系统有细微区别,比如我现在用CentOs,有些人

    2024年02月04日
    浏览(42)
  • 安装VS2019时出现“无法下载安装文件。请检查Internet连接,然后重试”问题

    近期需要安装VS软件,电脑不能连接外部网络,电脑为Win10操作系统。 本来只想装个VS2005,安装过程中提示兼容性报错,忽略这个提示继续安装,最后不能成功运行项目,提示缺少.NET Framework 1.0版本。 后来在自己可以连网的笔记本上试了一下,发现一开始安装时会提示缺少

    2024年02月15日
    浏览(147)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包