【Flutter】网络监听

网络监听:

插件连接:https://pub.flutter-io.cn/packages/connectivity

我以当前我使用版本

connectivity: ^0.4.2 #网络监测

在一个公用的界面

import 'dart:async';//(检测网络)
 import 'package:flutter/services.dart';//(检测网络)
 import 'package:connectivity/connectivity.dart';//(检测网络)
/**  * @Effect 检测网络  */ 
  //定义变量(网络状态)
  String _connectionStatus = 'Unknown';
  StreamSubscription<ConnectivityResult> _connectivitySubscription;
  //网络初始状态
  connectivityInitState(){
    _connectivitySubscription =
        Connectivity().onConnectivityChanged.listen((ConnectivityResult result) {
          print(result.toString());
          if(result.toString() == 'ConnectivityResult.none'){
            Fluttertoast.showToast(
                msg: '网络连接错误!',
                toastLength: Toast.LENGTH_SHORT,
                gravity: ToastGravity.BOTTOM,
                timeInSecForIos: 2,
                fontSize: 16.0
            );
          }
        });
  }
  //网络结束监听
  connectivityDispose(){
    _connectivitySubscription.cancel();
  }
  //网络进行监听
  Future<Null> initConnectivity() async {
    String connectionStatus;
    //平台消息可能会失败,因此我们使用Try/Catch PlatformException。
    try {
      connectionStatus = (await Connectivity().checkConnectivity()).toString();

      if (connectionStatus == ConnectivityResult.mobile) {
        // I am connected to a mobile network.
      } else if (connectionStatus == ConnectivityResult.wifi) {
        // I am connected to a wifi network.
      }
    } on PlatformException catch (e) {
      print(e.toString());
      connectionStatus = 'Failed to get connectivity.';
    }
  }
当有界面使用的时候

@override //初始化 void initState() {
 super.initState();
  initConnectivity(); //网络监听(开始)
  connectivityInitState(); //网络监听(进行)  /**  * @Wait 版本更新写在这  */ 
}


界面结束时记得关闭监听 @override
//结束 void dispose() {     super.dispose();   connectivityDispose(); //网络监听(结束) }
原文地址:https://www.cnblogs.com/sangwl/p/10873616.html