Skip to content

Programmation Asynchrone Dart

Les API asynchrones renvoient principalement des Future. Les Futures sont l’équivalent des Promise en JavaScript. Il s’agit d’une valeur indéterminée au moment de l’affectation, mais qui sera potentiellement résolue ultérieurement, soit avec une donnée, soit avec une erreur.

Deux syntaxes permettent de les utiliser :

  • .then()
  • async / await
void main() {
final data = _loadData();
print(data);
data.then(
(value) => print(value),
onError: (error) => print('ERROR : $error'),
);
}
Future<String> _loadData() {
//return Future.value('Hello');
return Future.delayed(const Duration(seconds: 1), () => 'Hello');
//return Future.error('_loadData Error');
}
void main() async {
final version = await loadVersion();
print(version);
}
Future<String> loadVersion() =>
Future.delayed(const Duration(seconds: 1), () => '1.0');

En savoir plus sur l’asynchronie avec Dart

if (astronauts == 0) {
throw StateError('No astronauts.');
}
void main(List<String> arguments) async {
try {
for (var path in arguments) {
var content = await File(path).readAsString();
print(content);
}
} on IOException catch (e, stacktrace) {
print('Could not read: $e\n$stacktrace');
} catch (e, stacktrace) {
print('Erreur : $e\n$stacktrace');
} finally {
print('Done !');
}
}