網絡監聽:
插件連接: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(); //網絡監聽(結束) }