Différence entre Future et Completer dans Flutter

Apr 27 2023
Dans Flutter, Future et Completer sont deux classes différentes liées à la programmation asynchrone. Un Future représente une valeur qui sera disponible dans le futur.

Dans Flutter, Futureet Completersont deux classes différentes liées à la programmation asynchrone.

A Futurereprésente une valeur qui sera disponible dans le futur. C'est une opération asynchrone qui se terminera à un moment donné, et quand elle le fera, elle renverra une valeur ou une erreur. Vous pouvez utiliser un Futurepour effectuer une opération en arrière-plan pendant que l'application reste réactive à l'utilisateur. Lorsque l'opération est terminée, vous pouvez mettre à jour l'interface utilisateur pour refléter le résultat.

A Completerest un moyen de créer un Futuremanuellement. Il fournit des méthodes pour terminer ou échouer explicitement le futur, vous permettant de contrôler quand il se termine. A Completerest utile lorsque vous devez attendre que plusieurs opérations asynchrones se terminent et combinent leurs résultats.

Voici un exemple pour illustrer la différence entre Futureet Completer:

// Using a Future
Future<int> fetchNumber() async {
  // Simulate a network delay
  await Future.delayed(Duration(seconds: 2));
  return 42;
}

void main() async {
  print("Start");
  final number = await fetchNumber();
  print("The answer is $number");
  print("End");
}

// Output:
// Start
// The answer is 42
// End

// Using a Completer
Completer<int> fetchNumber() {
  final completer = Completer<int>();
  // Simulate a network delay
  Future.delayed(Duration(seconds: 2), () {
    completer.complete(42);
  });
  return completer;
}

void main() async {
  print("Start");
  final completer = fetchNumber();
  final number = await completer.future;
  print("The answer is $number");
  print("End");
}

// Output:
// Start
// The answer is 42
// End