首页 > 其他分享 >flutter获取网络状态和网络状态监听

flutter获取网络状态和网络状态监听

时间:2023-04-06 18:03:37浏览次数:39  
标签:状态 插件 网络 flutter 获取 监听

flutter获取网络状态和网络状态监听

问题背景

Android开发中,获取网络状态以及监听网络状态变化是很常见的场景,我们现在看看flutter中是如何获取网络状态以及监听网络状态变化的。

问题分析

flutter开发过程中,可以通过使用Connectivity插件来获取当前设备的联网状态,以及监听当前设备网络状态变化。 (1)加载Connectivity插件,首先去pub仓库搜索插件最新版本。 插件pub仓库搜索地址:https://pub.flutter-io.cn/packages?q=connectivity image.png (2)将插件配置到项目中依赖 在flutter项目的pubspec.yaml中进行依赖的配置,代码如下:


environment:
  sdk: ">=2.10.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  ......
  dio: ^5.1.1
  connectivity_plus: ^3.0.3

问题解决

上面已经选择了需要的插件并在项目中进行了配置,下面直接上代码:

import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/material.dart';


class Test extends StatefulWidget {
  _TestState createState() => _TestState();
}

class _TestState extends State<Test> {
  String _netType;

  @override
  void initState() {
    super.initState();
    // 设置网络变化监听
    connectListener();
    // 获取网络连接状态
    getConnectType();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("从URl地址获取图片"),
      ),
      body: Center(child: Column (
        children: [FadeInImage.assetNetwork(
          image: 'https://pics4.baidu.com/feed/5243fbf2b2119313af56cce8226df5dc91238d35.jpeg@f_auto?token=7b38c4759efb80674f097940c476bd95',
          placeholder: 'lib/assets/images/logo1.png',),
        Text(_netType == null ? "获取网络类型为空" : _netType)],
      )),
    );
  }

  /// 获取联网类型
  void getConnectType() async {
    var connectResult = await (Connectivity().checkConnectivity());

    if (connectResult == ConnectivityResult.mobile) {
      _netType = "4G";
    } else if (connectResult == ConnectivityResult.wifi) {
      _netType = "wifi";
    } else {
      _netType = "未连接";
    }
    setState(() {
    });
  }

  /// 判断网络是否连接
  Future<bool> isConnected() async {
    var connectResult = await (Connectivity().checkConnectivity());
    return connectResult != ConnectivityResult.none;
  }

  /// 设置网络切换监听
  connectListener() async {
    Connectivity().onConnectivityChanged.listen((ConnectivityResult result) {
      print(result);
    });
  }
}

运行结果如下: image.png 手动改变手机的网络连接状态,观察控制台打印信息: image.png 显然,到这里我们已经实现了flutter项目中对设备网络状态的获取以及对网络状态变化的监听。 如果项目添加依赖后使用热重载的方式运行,可能会报错如下: Unhandled Exception: MissingPluginException(No implementation found for ********) 解决方案: 其实 Flutter 的 “hot reload” 技术虽然为我们的开发提供了极大的便利,但它也不是万能的。 我们新添加的插件包就无法直接通过热重载打入手机应用包中,有的人会尝试直接点击绿色向右小三角安装,这样也是无法实现重新编译打包安装到手机的,这个时候你必须停止掉应用(红色小正方形按钮),再重新点击安装才行。

问题总结

本文初步介绍了flutter中是如何获取网络状态以及监听网络状态变化的,有兴趣的同学可以进一步深入研究。

标签:状态,插件,网络,flutter,获取,监听
From: https://blog.51cto.com/baorant24/6173934

相关文章

  • 【code】动态规划-两种状态
    买卖股票的最佳时机给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能......
  • 恒创科技:如何正确配置美国网络服务器?
    在使用美国网络服务器时,充分注意其配置对于确保服务器和网络的性能、稳定性和安全性至关重要。网络服务器配置是指设置和配置网络服务器的硬件和软件以使其启动和运行的过程。它涉及多个步骤,包括配置操作系统、网络协议、安全设置、用户访问、共享资源和网络服务。配置美......
  • BiSyn GAT+:用于基于方面的情绪分析的双语法感知图形注意力网络
    基于方面的情绪分析(ABSA)是一种细粒度的情绪分析任务,旨在调整方面和相应的情绪,以进行特定方面的情绪极性推断。这很有挑战性,因为一个句子可能包含多个方面或复杂的(例如,条件关系、协调关系或对抗关系)。近年来,利用图神经网络挖掘依赖语法信息已成为最流行的趋势。尽管它取得了成功,但......
  • 【webserver 前置知识 03】Linux网络编程入门其二,I/O多路复用
    I/O多路复用I/O多路复用使得程序能够同时监听多个文件描述符LInux下实现I/O多路复用的系统调用主要由select、poll以及epoll(常问,要会自己写出来)例子阻塞等待阻塞等待可以一定程度上提高程序运行的效率优点是:不占用cpu的时间片;缺点是:同一时刻只能处理一个操作,效率较低;使用......
  • m基于简化后的轻量级yolov4深度学习网络农作物检测算法matlab仿真
    1.算法描述        YOLOv4的深层网络包括SPP模块、PANet模块、YOLOHead模块和部分卷积,其主要作用是加强目标特征提取并获取预测结果。SPP模块的输入端和输出端各连接一个三次卷积块,每个三次卷积块包含2个1×1卷积和1个3×3卷积。PANet模块包含特征层堆......
  • CAD命令行怎么恢复到初始状态?CAD命令行窗口恢复步骤
    CAD制图过程中,为了提高绘图效率经常会用到各种命令,很多命令信息及操作提示会在CAD命令行中显示。可当不小心改变了命令行的状态时,该怎么办呢?下面就和小编来了解一下CAD命令行怎么恢复到初始状态吧!CAD命令行窗口恢复初始步骤:1、启动浩辰CAD软件后,调用OP命令,即可打开【选项】对话......
  • 混沌工程之ChaosMesh使用之四模拟网络Duplicate包
    今天我们来玩一下ChaosMesh模拟网络duplicate包的情况。同时也要看一下对应用产生的直接影响。目标模拟网络重复包。配置yaml文件配置[root@s5ChaosMesh]#catnetwork-duplicate.yamlapiVersion:chaos-mesh.org/v1alpha1kind:NetworkChaosmetadata:name:network-duplica......
  • COMP3331/9331 计算机网络与应用
    COMP3331/9331ComputerNetworksandApplicationsAssignmentforTerm1,2023Version1.0Due:11:59am(noon)Friday,21April2023(Week10)1.ChangeLogVersion1.0releasedon9thMarch2023.2.GoalandlearningobjectivesForthisassignment,youaretoimp......
  • Kubernetes 集群部署 NFS 网络存储
    一、搭建NFS服务器1、背景介绍Kubernetes对Pod进行调度时,以当时集群中各节点的可用资源作为主要依据,自动选择某一个可用的节点,并将Pod分配到该节点上。在这种情况下,Pod中容器数据的持久化如果存储在所在节点的磁盘上,就会产生不可预知的问题,例如,当Pod出现故障,Kubernetes......
  • 顶象受邀加入“数字政府网络安全产业联盟”
    近日,顶象收到“数字政府网络安全产业联盟”颁发的会员牌匾,标志着顶象正式成为该联盟会员,共同推动数字政府网络安全产业的健康发展。“数字政府网络安全产业联盟”由广东省政务服务数据管理局牵头发起成立,属全国性非盈利行业组织。聚焦数字政府网络安全未来的趋势和核心技术,将网......