Junior
Como funciona a palavra-chave await na programação assíncrona no Flutter?
sobes.tech IA
Resposta da IA
A palavra-chave await é usada em funções assíncronas (marcadas com a palavra-chave async) para pausar a execução da função até que o Future seja concluído e retorne um resultado.
Princípio de funcionamento:
- Quando a execução chega à linha com
await, a função atual é suspensa. - O controlo retorna ao código que chamou (ou ao loop de eventos), permitindo que outras partes do programa sejam executadas. Isto evita bloquear a interface do utilizador.
- Quando o
Futureao qualawaitse refere é concluído (ou seja, realiza a sua operação assíncrona e devolve um valor ou lança uma exceção), a função suspensa retoma de onde foi interrompida. - Se o
Futurefoi concluído com sucesso, o valor devolvido peloFuturetorna-se o resultado da expressãoawait. - Se o
Futureterminou com um erro (lançou uma exceção), essa exceção será lançada no local ondeawaitfoi chamado.
Exemplo:
// Função assíncrona marcada com async
Future<String> fetchData() async {
// Simulação de uma operação assíncrona (por exemplo, uma requisição de rede)
await Future.delayed(Duration(seconds: 2));
return 'Dados recebidos da rede!';
}
void main() async {
print('Início da obtenção de dados...');
// Uso de await para esperar a conclusão do Future
try {
String data = await fetchData();
print('Obtido: $data');
} catch (e) {
print('Erro ao obter dados: $e');
}
print('Programa concluído (embora o await ainda possa estar a ser executado)');
}
Neste exemplo, main está marcada como async para usar await. A chamada await fetchData() pausa a execução de main por 2 segundos, sem bloquear a thread principal da interface do utilizador. Enquanto fetchData espera, outras partes da aplicação podem continuar a funcionar. Assim que fetchData termina, a execução de main retoma, e a variável data recebe o valor devolvido.