Differenza tra Future e Completer in Flutter

Apr 27 2023
In Flutter, Future e Completer sono due classi diverse correlate alla programmazione asincrona. Un futuro rappresenta un valore che sarà disponibile in futuro.

In Flutter, Futuree Completersono due classi diverse correlate alla programmazione asincrona.

A Futurerappresenta un valore che sarà disponibile in futuro. È un'operazione asincrona che verrà completata a un certo punto e, quando lo farà, restituirà un valore o un errore. Puoi usare a Futureper eseguire un'operazione in background mentre l'app rimane reattiva per l'utente. Al termine dell'operazione, è possibile aggiornare l'interfaccia utente per riflettere il risultato.

A Completerè un modo per creare un file Futuremanualmente. Fornisce metodi per completare o fallire il futuro in modo esplicito, permettendoti di controllare quando finisce. A Completerè utile quando è necessario attendere il completamento di più operazioni asincrone e combinarne i risultati.

Ecco un esempio per illustrare la differenza tra Futuree 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