Junior
Comment fonctionne le mot-clé await en programmation asynchrone sur Flutter?
sobes.tech IA
Réponse de l'IA
Le mot-clé await est utilisé dans les fonctions asynchrones (marquées par le mot-clé async) pour suspendre l'exécution de la fonction jusqu'à ce que le Future se termine et renvoie un résultat.
Principe de fonctionnement :
- Lorsque l'exécution atteint la ligne avec
await, la fonction en cours est suspendue. - Le contrôle revient au code appelant (ou à la boucle d'événements), permettant à d'autres parties du programme de s'exécuter. Cela empêche de bloquer l'interface utilisateur.
- Lorsque le
Futureréférencé parawaitse termine (c'est-à-dire, effectue son opération asynchrone et renvoie une valeur ou lance une exception), la fonction suspendue reprend là où elle a été interrompue. - Si le
Futures'est terminé avec succès, la valeur renvoyée par leFuturedevient le résultat de l'expressionawait. - Si le
Futures'est terminé avec une erreur (a lancé une exception), cette exception sera levée à l'endroit oùawaita été appelé.
Exemple :
// Fonction asynchrone marquée avec async
Future<String> fetchData() async {
// Simulation d'une opération asynchrone (par exemple, une requête réseau)
await Future.delayed(Duration(seconds: 2));
return 'Données reçues du réseau!';
}
void main() async {
print('Début de la récupération des données...');
// Utilisation de await pour attendre la fin du Future
try {
String data = await fetchData();
print('Reçu : $data');
} catch (e) {
print('Erreur lors de la récupération des données : $e');
}
print('Programme terminé (même si await peut encore être en cours)');
}
Dans cet exemple, main est marquée comme async pour utiliser await. L'appel à await fetchData() suspend l'exécution de main pendant 2 secondes, sans bloquer le fil principal de l'interface utilisateur. Pendant que fetchData attend, d'autres parties de l'application peuvent continuer à fonctionner. Une fois que fetchData se termine, l'exécution de main reprend, et la variable data reçoit la valeur renvoyée.