Flutter-手機(jī)網(wǎng)絡(luò)狀態(tài)監(jiān)聽

前言

在Android中會(huì)在基礎(chǔ)類中監(jiān)聽手機(jī)的網(wǎng)絡(luò)狀態(tài)结执,并作出相應(yīng)的提示谴麦,在Flutter 中也提供了相應(yīng)的package,但是略有不同宇挫;

1.依賴

dependencies:
  connectivity: ^0.3.2

2.導(dǎo)入

import 'package:flutter_cache_manager/flutter_cache_manager.dart';

3.簡單使用

檢查當(dāng)前網(wǎng)絡(luò)狀態(tài)

注意:在Android上荧止,這并不保證連接到Internet稼跳。例如盟庞,該應(yīng)用程序可能有WiFi接入,但可能是VPN或沒有接入的酒店WiFi汤善。也就是說網(wǎng)絡(luò)狀態(tài)是'wifi',也不代表你的手機(jī)能進(jìn)行網(wǎng)絡(luò)訪問什猖。

import 'package:connectivity/connectivity.dart';

var connectivityResult = await (new Connectivity().checkConnectivity());
if (connectivityResult == ConnectivityResult.mobile) {
  // I am connected to a mobile network.
} else if (connectivityResult == ConnectivityResult.wifi) {
  // I am connected to a wifi network.
}

監(jiān)聽網(wǎng)絡(luò)狀態(tài)

請(qǐng)注意,不應(yīng)該使用當(dāng)前的網(wǎng)絡(luò)狀態(tài)來決定是否可以可靠地進(jìn)行網(wǎng)絡(luò)連接红淡。
網(wǎng)絡(luò)層可能會(huì)出現(xiàn)超時(shí)和錯(cuò)誤不狮,需要在應(yīng)用程序代碼中做好異常處理;

import 'package:connectivity/connectivity.dart';

initState() {
  subscription = new Connectivity().onConnectivityChanged.listen((ConnectivityResult result) {
    // Got a new connectivity status!
  })
}

// Be sure to cancel subscription after you are done
dispose() {
  subscription.cancel();
}

4.例子

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:connectivity/connectivity.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String _connectionStatus = 'Unknown';
  final Connectivity _connectivity = Connectivity();
  StreamSubscription<ConnectivityResult> _connectivitySubscription;

  @override
  void initState() {
    super.initState();
    initConnectivity();
    _connectivitySubscription =
        _connectivity.onConnectivityChanged.listen((ConnectivityResult result) {
      setState(() => _connectionStatus = result.toString());
    });
  }

  @override
  void dispose() {
    _connectivitySubscription.cancel();
    super.dispose();
  }

   //平臺(tái)消息是異步的在旱,所以我們用異步方法初始化荤傲。
  Future<Null> initConnectivity() async {
    String connectionStatus;
    //平臺(tái)消息可能會(huì)失敗冀值,因此我們使用Try/Catch PlatformException猎贴。
    try {
      connectionStatus = (await _connectivity.checkConnectivity()).toString();
    } on PlatformException catch (e) {
      print(e.toString());
      connectionStatus = 'Failed to get connectivity.';
    }

    // 如果在異步平臺(tái)消息運(yùn)行時(shí)從樹中刪除了該小部件,
    // 那么我們希望放棄回復(fù)安接,而不是調(diào)用setstate來更新我們不存在的外觀俊嗽。
    if (!mounted) {
      return;
    }

    setState(() {
      _connectionStatus = connectionStatus;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Plugin example app'),
      ),
      body: Center(child: Text('Connection Status: $_connectionStatus\n')),
    );
  }
}

5.tips

當(dāng) wifi移動(dòng)網(wǎng)絡(luò) 同時(shí)存在時(shí)雾家,監(jiān)聽中提示當(dāng)前網(wǎng)絡(luò)wifi;并且此時(shí)斷開或者連接移動(dòng)網(wǎng)絡(luò)無回調(diào)

6.資料參考

https://pub.dartlang.org/packages/connectivity

  • 這個(gè)網(wǎng)址提供了很多兼容Android 和 IOS 的 package;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绍豁,一起剝皮案震驚了整個(gè)濱河市芯咧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌竹揍,老刑警劉巖敬飒,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異芬位,居然都是意外死亡无拗,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門昧碉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來英染,“玉大人揽惹,你說我怎么就攤上這事∷目担” “怎么了搪搏?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長闪金。 經(jīng)常有香客問我疯溺,道長,這世上最難降的妖魔是什么哎垦? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任喝检,我火速辦了婚禮,結(jié)果婚禮上撼泛,老公的妹妹穿的比我還像新娘。我一直安慰自己澡谭,他們只是感情好愿题,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蛙奖,像睡著了一般潘酗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上雁仲,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天仔夺,我揣著相機(jī)與錄音,去河邊找鬼攒砖。 笑死缸兔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的吹艇。 我是一名探鬼主播惰蜜,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼受神!你這毒婦竟也來了抛猖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤鼻听,失蹤者是張志新(化名)和其女友劉穎财著,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撑碴,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡撑教,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了醉拓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驮履。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鱼辙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出玫镐,到底是詐尸還是另有隱情倒戏,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布恐似,位于F島的核電站杜跷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏矫夷。R本人自食惡果不足惜葛闷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望双藕。 院中可真熱鬧淑趾,春花似錦、人聲如沸忧陪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至咐熙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間爪飘,已是汗流浹背师崎。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國打工齐蔽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留含滴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓缎脾,卻偏偏與公主長得像遗菠,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子牲平,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容