setupConnectivityListner method

dynamic setupConnectivityListner({
  1. CustomNoInternetWrapper? offlineWidget,
  2. GlobalKey<NavigatorState>? navigatorKey,
  3. NoConnectivityStyle? connectivityStyle = NoConnectivityStyle.SNACKBAR,
  4. Widget? customAlert,
})

Implementation

setupConnectivityListner({
  CustomNoInternetWrapper? offlineWidget,
  GlobalKey<NavigatorState>? navigatorKey,
  NoConnectivityStyle? connectivityStyle = NoConnectivityStyle.SNACKBAR,
  Widget? customAlert,
}) async {
  if (connectivityStyle != NoConnectivityStyle.NONE) {
    if (navigatorKey != null) {
      _contextKey = navigatorKey;
    }
    _userWidget = offlineWidget;
    _customAlert = customAlert;
    _connectivityStyle = connectivityStyle;

    if (_connectivityStyle == NoConnectivityStyle.CUSTOM &&
        _userWidget == null) {
      throw ("widgetForNoInternet is missing");
    }

    if (_connectivityStyle == NoConnectivityStyle.CUSTOMALERT &&
        _customAlert == null) {
      throw ("customAlert  is missing");
    }
  }

  checker.onStatusChange.listen((status) {
    if (_connectivityStyle == NoConnectivityStyle.CUSTOM &&
        (_contextKey.currentState?.overlay) != null) {
      _overlayState = (_contextKey.currentState!.overlay);
    }

    switch (status) {
      /// ConnectedState
      case InternetConnectionStatus.connected:
        try {
          if (connectivityStyle != NoConnectivityStyle.NONE) {
            _removeNoInternet();
          }
          ZoConnectivityWatcher().isInternetAvailable = true;
          ZoConnectivityWatcher()
              .connectivityController
              .sink
              .add(ConnectivityWatcherStatus.connected);
        } catch (e) {
          print(e);
        }

        break;

      /// DisconnectedState
      case InternetConnectionStatus.disconnected:
        ZoConnectivityWatcher().isInternetAvailable = false;
        ZoConnectivityWatcher()
            .connectivityController
            .sink
            .add(ConnectivityWatcherStatus.disconnected);
        if (connectivityStyle != NoConnectivityStyle.NONE) {
          showNoInternet();
        }

        break;
    }
  });
}