Diferença entre Future e Completer no Flutter

Apr 27 2023
No Flutter, Future e Completer são duas classes diferentes relacionadas à programação assíncrona. Um futuro representa um valor que estará disponível em algum momento no futuro.

No Flutter, Futuree Completersão duas classes diferentes relacionadas à programação assíncrona.

A Futurerepresenta um valor que estará disponível em algum momento no futuro. É uma operação assíncrona que será concluída em algum momento e, quando isso acontecer, retornará um valor ou um erro. Você pode usar um Futurepara executar uma operação em segundo plano enquanto o aplicativo permanece respondendo ao usuário. Quando a operação estiver concluída, você poderá atualizar a IU para refletir o resultado.

A Completeré uma maneira de criar um Futuremanualmente. Ele fornece métodos para concluir ou reprovar explicitamente o futuro, permitindo que você controle quando ele termina. A Completeré útil quando você precisa aguardar a conclusão de várias operações assíncronas e combinar seus resultados.

Aqui está um exemplo para ilustrar a diferença entre 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