waitForConnection method

Future<void> waitForConnection({
  1. Duration? timeout,
})

Waits until internet connection is available

Implementation

Future<void> waitForConnection({Duration? timeout}) async {
  final completer = Completer<void>();

  // Check if already connected
  if (await isConnected()) {
    return;
  }

  // Listen for connectivity changes
  _subscription = _connectivity.onConnectivityChanged.listen((result) {
    if (result != ConnectivityResult.none) {
      if (!completer.isCompleted) {
        completer.complete();
      }
    }
  });

  // Wait for connection or timeout
  if (timeout != null) {
    await completer.future.timeout(
      timeout,
      onTimeout: () {
        _subscription?.cancel();
        throw TimeoutException('Timeout waiting for network connection');
      },
    );
  } else {
    await completer.future;
  }

  _subscription?.cancel();
}