devterview_$ iniciar simulação

`FutureBuilder` e `StreamBuilder`

MédioPlenoAssincronia

Pergunta

Pra que servem `FutureBuilder` e `StreamBuilder` no Flutter, e qual erro comum de reconstrução aparece com eles?

Resposta esperada

São widgets que reconstroem em resposta a uma computação assíncrona: `FutureBuilder` pra um resultado único (uma chamada de API), `StreamBuilder` pra uma sequência (websocket, mudanças de um banco reativo, sensor). Você passa o future/stream e um `builder` que recebe um `AsyncSnapshot` com `connectionState` e `data`/`error` — e trata loading, erro e sucesso. O erro clássico: criar o future/stream DENTRO do `build()` (`FutureBuilder(future: buscarDados(), ...)`). Como `build` roda a cada reconstrução (setState de um pai, rotação de tela), você dispara uma requisição nova toda vez e o widget pisca de volta pra loading. A correção: criar o future/stream UMA vez — no `initState` de um StatefulWidget guardando numa variável, ou via um gerenciador de estado — e passar a referência estável pro builder.

Por que perguntam isso

Pergunta pleno de Flutter. O 'future criado no build' é a pegadinha nº1. Conecta com 'useEffect no build' do React.

#futurebuilder#streambuilder#async#rebuild
publicidade

Relacionadas