Rilanciare operazioni asincrone in Dart e Flutter con retry
retry è un package per Dart e Flutter che ci permette di rilanciare operazioni asincrone in automatico qualora fallissero.
In questo articolo ne vediamo un esempio in Dart.
Per installarlo:
dart pub add retry
flutter pub add retry
Qui sotto un esempio di codice in cui indichiamo massimo 4 tentativi (il default è 8) ed usiamo un url sbagliato appositamente:
import 'dart:async';
import 'dart:io';
import 'package:retry/retry.dart';
Future<void> main() async {
final client = HttpClient();
final url = 'https://www.google.5555';
try {
final rOpts = RetryOptions(maxAttempts: 4);
final statusCode = await rOpts.retry(
() async {
final request = await client.getUrl(Uri.parse(url)).timeout(
Duration(seconds: 5),
);
final response = await request.close().timeout(
Duration(seconds: 5),
);
await response.drain();
return response.statusCode;
},
retryIf: (e) => e is SocketException || e is TimeoutException,
);
if (statusCode == 200) {
print('OK');
} else {
print('URL non raggiungibile');
}
} on Exception catch (e) {
print(e);
} finally {
client.close();
}
}
Enjoy!
dart flutter retry
Commentami!