Flutter檢查連接網(wǎng)絡(luò)connectivity_plus實(shí)現(xiàn)步驟
前言
有些對(duì)通訊敏感的程序,我們需要檢查當(dāng)前連接的網(wǎng)絡(luò)情況。
我推薦使用 connectivity_plus
https://pub-web.flutter-io.cn/packages/connectivity_plus
這個(gè)插件的好處就是支持全平臺(tái),這點(diǎn)非常好。
我們今天來(lái)寫(xiě)一個(gè)例子嘗試下這個(gè)功能。
這個(gè)插件遇到獲取狀態(tài)不對(duì),請(qǐng)用真機(jī)調(diào)試,模擬器可能有偏差。

步驟
第一步:配置依賴(lài)包
pubspec.yaml
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.2
connectivity_plus: ^4.0.1第二步:修改 android 最小編譯版本
android/app/build.gradle
改成·minSdkVersion 19
android {
...
defaultConfig {
applicationId "com.example.flutter_application_connectivity"
minSdkVersion 19 //flutter.minSdkVersion
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}第三步:檢查網(wǎng)路連接代碼
lib/connectivity.dart
定義 Connectivity 對(duì)象
class _ConnectivityPageState extends State<ConnectivityPage> {
// Connectivity 對(duì)象
final Connectivity _connectivity = Connectivity();消息訂閱 StreamSubscription
// 消息訂閱 late StreamSubscription<ConnectivityResult> _subscription;
返回狀態(tài)保存
// 初始返回的網(wǎng)絡(luò)狀態(tài) ConnectivityResult? _connectivityStatus;
初始化,單次檢查方式
// 初始化
Future<void> _init() async {
try {
// 方式1:?jiǎn)未握?qǐng)求檢查
final connectivityResult = await _connectivity.checkConnectivity();
_updateConnectionStatus(connectivityResult);
} on PlatformException catch (e) {
print(e);
print('連接網(wǎng)絡(luò)出現(xiàn)了異常');
}
}訂閱方式
// 初始化
Future<void> _init() async {
try {
// 方式1:?jiǎn)未握?qǐng)求檢查
// final connectivityResult = await _connectivity.checkConnectivity();
// _updateConnectionStatus(connectivityResult);
// 方式2:狀態(tài)訂閱
_subscription =
_connectivity.onConnectivityChanged.listen(_updateConnectionStatus);
} on PlatformException catch (e) {
print(e);
print('連接網(wǎng)絡(luò)出現(xiàn)了異常');
}
}更新訂閱狀態(tài)
Future<void> _updateConnectionStatus(ConnectivityResult result) async {
setState(() {
_connectivityStatus = result;
});
if (result == ConnectivityResult.mobile) {
print('成功連接移動(dòng)網(wǎng)絡(luò)');
} else if (result == ConnectivityResult.wifi) {
print('成功連接WIFI');
} else if (result == ConnectivityResult.ethernet) {
print('成功連接到以太網(wǎng)');
} else if (result == ConnectivityResult.vpn) {
print('成功連接vpn網(wǎng)絡(luò)');
} else if (result == ConnectivityResult.bluetooth) {
print('成功連接藍(lán)牙');
} else if (result == ConnectivityResult.other) {
print('成功連接除以上以外的網(wǎng)絡(luò)');
} else if (result == ConnectivityResult.none) {
print('沒(méi)有連接到任何網(wǎng)絡(luò)');
}
}初始 initState
@override
void initState() {
super.initState();
_init();
}釋放 dispose,關(guān)閉訂閱
@override
void dispose() {
_subscription.cancel();
super.dispose();
}視圖
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('網(wǎng)路連接檢查'),
),
body: Center(
child: Column(
children: [
const Text('狀態(tài)'),
Text(_connectivityStatus?.toString() ?? "未知"),
],
),
),
);
}小結(jié)
connectivity_plus 是一個(gè) Flutter 插件,用于檢測(cè)設(shè)備的網(wǎng)絡(luò)連接狀態(tài)。它可以檢測(cè)設(shè)備是否連接到互聯(lián)網(wǎng),以及連接類(lèi)型是 Wi-Fi、蜂窩數(shù)據(jù)還是無(wú)網(wǎng)絡(luò)連接。這個(gè)插件的作用和重要性在于:
- 提供了一種簡(jiǎn)單、可靠的方法來(lái)檢測(cè)設(shè)備的網(wǎng)絡(luò)連接狀態(tài),方便開(kāi)發(fā)者編寫(xiě)更智能的應(yīng)用程序。
- 讓?xiě)?yīng)用程序可以根據(jù)設(shè)備的網(wǎng)絡(luò)連接狀態(tài)來(lái)調(diào)整其行為,例如根據(jù)網(wǎng)絡(luò)狀況選擇合適的數(shù)據(jù)加載方式、調(diào)整 UI 布局等。
- 支持多種平臺(tái),包括 Android、iOS、macOS 和 Windows,可以輕松地在不同平臺(tái)上進(jìn)行開(kāi)發(fā)和測(cè)試。
總之,connectivity_plus 插件是一個(gè)非常有用和重要的工具,可以幫助開(kāi)發(fā)者編寫(xiě)更智能、更適應(yīng)用戶(hù)需求的應(yīng)用程序。
以上就是Flutter檢查連接網(wǎng)絡(luò)connectivity_plus實(shí)現(xiàn)步驟的詳細(xì)內(nèi)容,更多關(guān)于Flutter connectivity_plus的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android實(shí)現(xiàn)強(qiáng)制下線功能的示例代碼
這篇文章主要介紹了Android實(shí)現(xiàn)強(qiáng)制下線功能的示例代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
Android編程設(shè)計(jì)模式之模板方法模式詳解
這篇文章主要介紹了Android編程設(shè)計(jì)模式之模板方法模式,結(jié)合實(shí)例形式詳細(xì)分析了Android模板方法模式的概念、功能、使用場(chǎng)景、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2017-12-12
Android開(kāi)發(fā)之DrawerLayout實(shí)現(xiàn)抽屜效果
這篇文章主要介紹了Android開(kāi)發(fā)之DrawerLayout實(shí)現(xiàn)抽屜效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
Android?實(shí)現(xiàn)自定義圓形進(jìn)度條的三種常用方法
這篇文章主要介紹了Android?實(shí)現(xiàn)自定義圓形進(jìn)度條的三種常用方法的相關(guān)資料,需要的朋友可以參考下2023-03-03
關(guān)于Android 4.4相機(jī)預(yù)覽、錄像花屏的問(wèn)題的解決方法
這篇文章主要介紹了關(guān)于Android 4.4相機(jī)預(yù)覽、錄像花屏的問(wèn)題的解決方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2016-12-12
Android仿簡(jiǎn)書(shū)動(dòng)態(tài)searchview搜索欄效果
這篇文章主要為大家詳細(xì)介紹了Android仿簡(jiǎn)書(shū)動(dòng)態(tài)searchview效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
Kotlin Service服務(wù)組件開(kāi)發(fā)詳解
這幾天分析了一下的啟動(dòng)過(guò)程,于是乎,今天寫(xiě)一下Service使用; 給我的感覺(jué)是它并不復(fù)雜,千萬(wàn)不要被一坨一坨的代碼嚇住了,雖然彎彎繞繞不少,重載函數(shù)一個(gè)接著一個(gè),就向走迷宮一樣,但只要抓住主線閱讀,很快就能找到出口2022-12-12
Android 中ListView setOnItemClickListener點(diǎn)擊無(wú)效原因分析
這篇文章主要介紹了Android 中ListView setOnItemClickListener點(diǎn)擊無(wú)效原因分析的相關(guān)資料,需要的朋友可以參考下2016-01-01
Android Studio徹底刪除項(xiàng)目 Android Studio徹底刪除Module
這篇文章主要為大家詳細(xì)介紹了Android Studio徹底刪除項(xiàng)目,Android Studio徹底刪除Module,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04

