Junior
O que é o FutureBuilder no Flutter?
sobes.tech IA
Resposta da IA
Widget para construir interfaces com base em dados assíncronos obtidos de Future.
Parâmetros principais:
future: Uma instância deFuturea ser observada.initialData: Dados exibidos antes dofutureterminar.builder: Função (AsyncWidgetBuilder) chamada a cada mudança de estado dofuturee que recebeBuildContexteAsyncSnapshot.
Estados de AsyncSnapshot:
ConnectionState.none: O Future ainda não começou.ConnectionState.waiting: O Future está em execução.ConnectionState.active: (Raro para Future) O Future retornou dados intermediários.ConnectionState.done: O Future foi concluído (com sucesso ou erro).
Exemplo de uso:
// Suponha que temos uma função que retorna um Future<String>
Future<String> fetchData() async {
await Future.delayed(Duration(seconds: 2)); // Simulação de uma requisição de rede
return "Dados carregados!";
}
// ... no método build do widget:
@override
Widget build(BuildContext context) {
return FutureBuilder<String>(
future: fetchData(), // Nosso Future
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
// Mostramos um indicador de carregamento enquanto o Future está em execução
return CircularProgressIndicator();
} else if (snapshot.hasError) {
// Mostramos uma mensagem de erro se o Future terminou com erro
return Text('Erro: ${snapshot.error}');
} else {
// Mostramos os dados se o Future foi concluído com sucesso
return Text('Resultado: ${snapshot.data}');
}
},
);
}
Vantagens:
- Facilita o trabalho com operações assíncronas na UI.
- Reconstrói automaticamente a UI ao mudar o estado do
Future. - Divide claramente a lógica de carregamento de dados e a lógica de construção da UI.
Desvantagens:
- Pode causar reconstruções desnecessárias se o
Futurefor criado dentro do métodobuild. Recomenda-se criar oFutureuma única vez (por exemplo, noinitState).