【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();
  publicAll().initConnectivity(); //网络监听(开始)
  publicAll().connectivityInitState(); //网络监听(进行)  /**  * @Wait 版本更新写在这  */ 
}
界面结束时记得关闭监听
@override //结束
 void dispose() { 
super.dispose();
  publicAll().connectivityDispose(); //网络监听(结束)
 }

猜你喜欢

转载自www.cnblogs.com/sangwl/p/10873616.html