Flutter检查连接网络connectivity_plus实现步骤
前言
有些对通讯敏感的程序,我们需要检查当前连接的网络情况。
我推荐使用 connectivity_plus
https://pub-web.flutter-io.cn/packages/connectivity_plus
这个插件的好处就是支持全平台,这点非常好。
我们今天来写一个例子尝试下这个功能。
这个插件遇到获取状态不对,请用真机调试,模拟器可能有偏差。

步骤
第一步:配置依赖包
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
}第三步:检查网路连接代码
lib/connectivity.dart
定义 Connectivity 对象
class _ConnectivityPageState extends State<ConnectivityPage> {
// Connectivity 对象
final Connectivity _connectivity = Connectivity();消息订阅 StreamSubscription
// 消息订阅 late StreamSubscription<ConnectivityResult> _subscription;
返回状态保存
// 初始返回的网络状态 ConnectivityResult? _connectivityStatus;
初始化,单次检查方式
// 初始化
Future<void> _init() async {
try {
// 方式1:单次请求检查
final connectivityResult = await _connectivity.checkConnectivity();
_updateConnectionStatus(connectivityResult);
} on PlatformException catch (e) {
print(e);
print('连接网络出现了异常');
}
}订阅方式
// 初始化
Future<void> _init() async {
try {
// 方式1:单次请求检查
// final connectivityResult = await _connectivity.checkConnectivity();
// _updateConnectionStatus(connectivityResult);
// 方式2:状态订阅
_subscription =
_connectivity.onConnectivityChanged.listen(_updateConnectionStatus);
} on PlatformException catch (e) {
print(e);
print('连接网络出现了异常');
}
}更新订阅状态
Future<void> _updateConnectionStatus(ConnectivityResult result) async {
setState(() {
_connectivityStatus = result;
});
if (result == ConnectivityResult.mobile) {
print('成功连接移动网络');
} else if (result == ConnectivityResult.wifi) {
print('成功连接WIFI');
} else if (result == ConnectivityResult.ethernet) {
print('成功连接到以太网');
} else if (result == ConnectivityResult.vpn) {
print('成功连接vpn网络');
} else if (result == ConnectivityResult.bluetooth) {
print('成功连接蓝牙');
} else if (result == ConnectivityResult.other) {
print('成功连接除以上以外的网络');
} else if (result == ConnectivityResult.none) {
print('没有连接到任何网络');
}
}初始 initState
@override
void initState() {
super.initState();
_init();
}释放 dispose,关闭订阅
@override
void dispose() {
_subscription.cancel();
super.dispose();
}视图
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('网路连接检查'),
),
body: Center(
child: Column(
children: [
const Text('状态'),
Text(_connectivityStatus?.toString() ?? "未知"),
],
),
),
);
}小结
connectivity_plus 是一个 Flutter 插件,用于检测设备的网络连接状态。它可以检测设备是否连接到互联网,以及连接类型是 Wi-Fi、蜂窝数据还是无网络连接。这个插件的作用和重要性在于:
- 提供了一种简单、可靠的方法来检测设备的网络连接状态,方便开发者编写更智能的应用程序。
- 让应用程序可以根据设备的网络连接状态来调整其行为,例如根据网络状况选择合适的数据加载方式、调整 UI 布局等。
- 支持多种平台,包括 Android、iOS、macOS 和 Windows,可以轻松地在不同平台上进行开发和测试。
总之,connectivity_plus 插件是一个非常有用和重要的工具,可以帮助开发者编写更智能、更适应用户需求的应用程序。
以上就是Flutter检查连接网络connectivity_plus实现步骤的详细内容,更多关于Flutter connectivity_plus的资料请关注脚本之家其它相关文章!
相关文章
解决eclipse启动时报错Failed to create the Java Virtural Machine.问题的
这篇文章主要介绍了解决eclipse启动时报Failed to create the Java Virtural Machine.问题的方法,感兴趣的小伙伴们可以参考一下2016-01-01
Android中TextView显示圆圈背景或设置圆角的方法
TextView显示文本给用户,并允许他们选择编辑。TextView是一个完整的文本编辑器,但是其基本类配置为不允许编辑。下面这篇文章主要给大家介绍了关于Android中TextView显示圆圈背景或设置圆角的方法,需要的朋友可以参考借鉴,下面来一起看看吧。2017-05-05
Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能(附源码)
以下是我自己花功夫编写了一种非常简单的下拉刷新实现方案,现在拿出来和大家分享一下。相信在阅读完本篇文章之后,大家都可以在自己的项目中一分钟引入下拉刷新功能2013-07-07
Android 自定义View时使用TypedArray配置样式属性详细介绍
这篇文章主要介绍了Android 自定义View时使用TypedArray配置样式属性详细介绍的相关资料,需要的朋友可以参考下2016-11-11
android 9.0 launcher3 去掉抽屉式显示所有 app(代码详解)
本文通过实例代码给大家介绍了android 9.0 Launcher3 去掉抽屉式,显示所有 app,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2019-11-11


最新评论