waitForConnection method
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();
}