共计 3158 个字符,预计需要花费 8 分钟才能阅读完成。
Flutter 查看连贯网络 connectivity_plus
<img src=”https://ducafecat.oss-cn-beijing.aliyuncs.com/podcast/2023/06/6180be60f9bc9ea6eb648c500268085c.jpeg” style=”width:90%;” />
前言
有些对通信敏感的程序,咱们须要查看以后连贯的网络状况。
我举荐应用 connectivity_plus
https://pub-web.flutter-io.cn/packages/connectivity_plus
这个插件的益处就是反对全平台,这点十分好。
咱们明天来写一个例子尝试下这个性能。
这个插件遇到获取状态不对,请用真机调试,模拟器可能有偏差。
<img src=”https://ducafecat.oss-cn-beijing.aliyuncs.com/podcast/2023/06/3bdc337cd941981e81a2f01c5554003d.png” style=”width:50%;” />
步骤
第一步:配置依赖包
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() ?? "未知"),
],
),
),
);
}
代码
https://github.com/ducafecat/flutter_develop_tips/tree/main/flutter_application_connectivity
小结
connectivity_plus
是一个 Flutter 插件,用于检测设施的网络连接状态。它能够检测设施是否连贯到互联网,以及连贯类型是 Wi-Fi、蜂窝数据还是无网络连接。这个插件的作用和重要性在于:
- 提供了一种简略、牢靠的办法来检测设施的网络连接状态,不便开发者编写更智能的应用程序。
- 让应用程序能够依据设施的网络连接状态来调整其行为,例如依据网络情况抉择适合的数据加载形式、调整 UI 布局等。
- 反对多种平台,包含 Android、iOS、macOS 和 Windows,能够轻松地在不同平台上进行开发和测试。
总之,connectivity_plus
插件是一个十分有用和重要的工具,能够帮忙开发者编写更智能、更适应用户需要的应用程序。
感激浏览本文
如果我有什么错?请在评论中让我晓得。我很乐意改良。
© 猫哥
ducafecat.com
end
本文由 mdnice 多平台公布