hasInternetAccess method

Future<bool> hasInternetAccess()

Perform a one-shot internet reachability check.

Tries DNS lookups against configured addresses. Returns true if at least one resolves successfully.

Implementation

Future<bool> hasInternetAccess() async {
  for (final address in _config.lookupAddresses) {
    try {
      final result = await InternetAddress.lookup(address)
          .timeout(_config.timeout);
      if (result.isNotEmpty && result[0].rawAddress.isNotEmpty) {
        _logger.debug('InternetChecker: DNS lookup for $address succeeded');
        return _update(true);
      }
    } on SocketException catch (_) {
      _logger.debug('InternetChecker: DNS lookup for $address failed');
    } on TimeoutException catch (_) {
      _logger.debug('InternetChecker: DNS lookup for $address timed out');
    }
  }

  _logger.warning('InternetChecker: all DNS lookups failed — no internet');
  return _update(false);
}