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多平台公布