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

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. 效果图如下:
    在这里插入图片描述

http://www.kler.cn/a/584170.html

相关文章:

  • Yashan DB 应用开发
  • Python里matplotlib不显示中文的问题
  • MoonSharp 文档五
  • 前瞻技术:未来生活的新动力与改变
  • spark实验
  • 树与二叉树的遍历
  • Vue3中全局使用Sass变量方法
  • JetBrains(全家桶: IDEA、WebStorm、GoLand、PyCharm) 2024.3+ 2025 版免费体验方案
  • 【拓扑排序】火星词典
  • SpringS ecurity测试登录接口报错
  • Visual Studio关闭警告
  • 16.AVL树实现
  • 自动化测试 | Python+PyCharm+Google Chrome+Selenium 环境安装记录
  • 数据可视化图表库LightningChart JS 全新发布v7.0——提高视觉质量
  • SpringBoot为什么流行以及能解决什么问题?
  • 个人学习编程(3-13) 刷题2
  • Linux下用多进程在GPU上跑Pytorch模型问题
  • python -面试题--算法
  • 安科瑞ACCU-100微电网协调控制器:助力绿色能源系统运行
  • JVM之基础知识