stream static method

Create a stream of ConnectivityStatus based on the ConnectivityConfig

Implementation

static Stream<ConnectivityStatus> stream(ConnectivityConfig config) async* {
  while (true) {
    Duration? ping = await ConnectivityChecker.ping(config.pingRequest);
    if (ping == null) {
      // catch exception like TimeoutError
      // check wifi connection
      var hasConnection = await ConnectivityChecker.hasNetworkConnection();

      if (hasConnection) {
        yield ConnectivityStatus.hasNetworkButNoConnection(
            errorMsg: errorMessage);
      } else {
        yield ConnectivityStatus.offline(errorMsg: errorMessage);
      }
    } else {
      yield ConnectivityStatus.fromPing(config, ping);
    }

    // sleep for next round
    await Future.delayed(config.checkInterval);
  }
}