[Day27] Flutter with GetX connectivity

connectivity侦测网路状态
判断当前是Wifi或是一般手机网路

在connectivity 文件里,有写到将不会继续更新, 建议大家转移到connectivity_plus但基本上用法一样

在安卓系统上, 不保证是否一定有连上网路
Note that on Android, this does not guarantee connection to Internet.

程序部分 在main.dart里

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await ConnectivityManager().init();
  await UserDefault().init();
  // await PushNotificationManager.init();
  runApp(MyApp());
}

接着建立ConnectivityManager封装一次
并在onConnectivityChanged里面写handler,
这边也用到了GetX snackbar 作通知.

class ConnectivityManager {
  final Connectivity _connectivity = Connectivity();
  init() async {
    //App launch check once
    final reslut = await _connectivity.checkConnectivity();
    resultHandler(reslut);

    _connectivity.onConnectivityChanged.listen((result) {
      //At app using, if network changed
      resultHandler(result);
    });
  }

  resultHandler(ConnectivityResult result) {
    if (result == ConnectivityResult.none) {
      Future.delayed(Duration(seconds: 1)).then((value) {
        Get.snackbar(
          "当前状态无网路",
          "请检查网路连线",
          duration: Duration(days: 1),
          icon: Icon(Icons.signal_wifi_bad),
        );
      });
    } else {
      if (Get.isSnackbarOpen != null) {
        if (Get.isSnackbarOpen!) Get.back();
      }
    }
  }
}

效果如下
g94K04BQ6Ser9b0sumxRVg

本篇的GitHub source code

下一篇将为大家介绍 Socket.io


<<:  【在 iOS 开发路上的大小事-Day29】浅谈 iOS 的 Background Modes

>>:  27 显示覆盖的牌

Day 12: Merge Intervals

看完这题题目 还记得小时候很常被问到: 给你一些数字,请你从这些数中用最少的数,来涵盖最多的范围。於...

第二十六章、燃烧吧!Three.js 小宇宙!(肆)

简介 在 Three.js 动画中我们可以透过以下三种方式来制作动画: SkinnedMesh 骨骼...

【左京淳的JAVA WEB学习笔记】第十一章 显示列表、图片、商品细节

显示列表 访问案例网站时默认调用index.jsp,在此页面设定转向MainSvl。 http://...

Day-21 SONY 的刁蛮三公主、PS3 步步艰辛的复兴之路

以 PS1 和 PS2 称霸於前两个世代的 SONY、在新的世代推出的主机当然就叫做 PS3。然而身...

【Day 04】LeetCode:Fizz Buzz ( 用 JavaScript 学演算法 )

我们透过 LeetCode #412 Fizz Buzz 来实际感受解决问题的过程 ( 题目连结 )...