【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(); //網絡監聽(結束) }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM