网络监听:
插件连接: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(); //网络监听(结束) }