前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Flutter中使用connectivity实现网络检测

Flutter中使用connectivity实现网络检测

作者头像
越陌度阡
发布2021-01-29 10:38:38
发布2021-01-29 10:38:38
1.7K00
代码可运行
举报
运行总次数:0
代码可运行

1. 安装插件

配置 connectivity 插件。

代码语言:javascript
代码运行次数:0
运行
复制
dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter
  date_format: ^1.0.6
  flutter_cupertino_date_picker: ^1.0.26+2 
  flutter_swiper: ^1.1.6
  fluttertoast: ^7.1.6
  http: ^0.12.2
  dio: ^3.0.10
  flutter_html: ^1.1.0
  flutter_inappwebview: ^4.0.0+4
  device_info: ^1.0.0
  amap_location: ^0.2.0
  image_picker: ^0.6.7+21
  video_player: ^1.0.1
  chewie: ^0.12.2

  # 网络检测
  connectivity: ^2.0.2

在pubspec.yaml中配置保存后,在VS Code环境中会自动下载依赖包。

如果无法正常下载,执行 flutter pub get 。

2. 引入依赖

在需要用到的该插件的文件中引入插件包。

代码语言:javascript
代码运行次数:0
运行
复制
import 'package:connectivity/connectivity.dart';

3. 使用插件

代码语言:javascript
代码运行次数:0
运行
复制
// 定义事件
var subscription;
// 网络提示
String _stateText;

// 初始化状态
@override
void initState() {
    super.initState();

    // 官方代码
    subscription = Connectivity().onConnectivityChanged.listen((ConnectivityResult result) {
        // WIFI网络
        if(result==ConnectivityResult.wifi){
            setState(() {
                _stateText="当前为WIFI网络";
            });
        // 移动网络
        }else if(result==ConnectivityResult.mobile){
            setState(() {
                _stateText="当前为手机网络";
            });
        // 没有网络
        }else{
            setState(() {
                _stateText="当前没有网络";
            });
        }
    });
}

// 消毁组件
@override
dispose() {
    super.dispose();
    // 消毁组件
    subscription.cancel();
}

4. 完整实例

代码语言:javascript
代码运行次数:0
运行
复制
import 'package:flutter/material.dart';
import 'package:connectivity/connectivity.dart';

class NetworkPage extends StatefulWidget {
    NetworkPage({Key key}) : super(key: key);
    @override
    _NetworkPageState createState() => _NetworkPageState();
}
class _NetworkPageState extends State<NetworkPage> {

    // 定义事件
    var subscription;
    // 网络提示
    String _stateText;

    // 初始化状态
    @override
    void initState() {
        super.initState();

        // 官方代码
        subscription = Connectivity().onConnectivityChanged.listen((ConnectivityResult result) {
            // WIFI网络
            if(result==ConnectivityResult.wifi){
                setState(() {
                    _stateText="当前为WIFI网络";
                });
            // 移动网络
            }else if(result==ConnectivityResult.mobile){
                setState(() {
                    _stateText="当前为手机网络";
                });
            // 没有网络
            }else{
                setState(() {
                    _stateText="当前没有网络";
                });
            }
        });
    }
    
    // 消毁组件
    @override
    dispose() {
        super.dispose();
        // 消毁组件
        subscription.cancel();
    }


    @override
    Widget build(BuildContext context) {
        return Scaffold(
            appBar: AppBar(
                title:Text("检测网络变化")
            ),
            body:Center(
                child:Text("${_stateText}")
            )
        );
    }
}

参考:

https://pub.flutter-io.cn/packages/connectivity

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/01/24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 安装插件
  • 2. 引入依赖
  • 3. 使用插件
  • 4. 完整实例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档