当前位置: 首页 > news >正文

Flutter_学习记录_connectivity_plus 检测网络

  1. 引入插件
    官方网址:https://pub.dev/packages/connectivity_plus
    在这里插入图片描述
  2. 导入头文件
import 'package:connectivity_plus/connectivity_plus.dart';
  1. StreamSubscription订阅网络监听
late StreamSubscription<List<ConnectivityResult>> _subscription;

 void initState() { 
    super.initState(); 

    // 必须要有订阅,如果没有订阅的话,那下次再进来,就检测不到网络的变化了
    _subscription =  Connectivity().onConnectivityChanged.listen((List<ConnectivityResult> result){
      print(result);
      if (result.contains(ConnectivityResult.wifi)) {
        setState(() {
          _stateText = "网络连接的Wifi";
        });
      } else if (result.contains(ConnectivityResult.none)) {
        setState(() {
          _stateText = "没有网络连接";
        });
      } else {
        setState(() {
          _stateText = "检测中";
        });
      }
    });
  }
  1. dispose时,取消订阅
 void dispose() { 
    _subscription.cancel();
    super.dispose(); 
  }
  1. 完整代码案例
import 'dart:async';

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

class ConnectivityDemo extends StatefulWidget {
  const ConnectivityDemo({super.key});

  
  State<ConnectivityDemo> createState() => _ConnectivityDemoState();
}

class _ConnectivityDemoState extends State<ConnectivityDemo> {
  late StreamSubscription<List<ConnectivityResult>> _subscription;
  String _stateText = "检测网络中";

   void initState() { 
    super.initState(); 

    // 必须要有订阅,如果没有订阅的话,那下次再进来,就检测不到网络的变化了
    _subscription =  Connectivity().onConnectivityChanged.listen((List<ConnectivityResult> result){
      print(result);
      if (result.contains(ConnectivityResult.wifi)) {
        setState(() {
          _stateText = "网络连接的Wifi";
        });
      } else if (result.contains(ConnectivityResult.none)) {
        setState(() {
          _stateText = "没有网络连接";
        });
      } else {
        setState(() {
          _stateText = "检测中";
        });
      }
    });
  }

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

  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("网络监听"),
      ),
      body: Center(child: Text(_stateText)),
    );
  }
}
  1. 效果图如下:
    在这里插入图片描述

相关文章:

  • java简单基础学习
  • 利用pprof对golang进行性能分析
  • 图片填充容器,如何描述
  • Flutter 边框按钮:OutlinedButton 完全手册与设计最佳实践
  • Java集成WebSocket实现消息推送,详细步骤以及出现的问题如何解决
  • LeetCode 解题思路 18(Hot 100)
  • ESP32移植Openharmony外设篇(10)inmp441麦克风
  • 【接口耗时】⭐️自定义拦截器实现接口耗时统计
  • 基于消息方式的系统间通信
  • (分块)洛谷 P2801 教主的魔法 题解
  • TimeGAN:开启时间序列生成新纪元,结合GAN与自回归模型的优势
  • 智能运维管理系统的主要优势
  • 基于asp.net实现的连锁餐厅收银系统[包运行成功+永久免费答疑辅导]
  • 4、linux c 进程
  • RK3568 android11 基于PN7160的NXP NFC移植
  • C++基础——从C语言快速入门
  • 前端权限系统
  • ctfshow web刷题记录
  • 2.机器学习-回归模型-非线性模型
  • 面试求助:接口测试用例设计主要考虑哪些方面?
  • 建行原副行长章更生涉嫌受贿罪、违法发放贷款罪被逮捕
  • 上海电视节发布海报、宣传片:三十而励,光影新程
  • 河北6人在河道倒污泥被控污染环境案撤诉后,已拿到国赔决定书
  • 66岁华仁世纪集团有限公司创始人、董事长梁福东逝世
  • 贵州茅台:支持工作餐不上酒的规定,请投资者相信茅台创新和自我调节能力
  • 受贿2.61亿余元,陕西省政协原主席韩勇一审被判死缓