Sobes.tech
Junior — Middle

Qual é a diferença entre os componentes StreamBuilder e Future ao trabalhar com dados assíncronos no Flutter?

sobes.tech IA

Resposta da IA

No Flutter, FutureBuilder e StreamBuilder são utilizados para trabalhar com dados assíncronos, mas diferem quanto ao tipo de fonte de dados:

  • FutureBuilder trabalha com um objeto Future — é uma operação assíncrona de uma só vez que devolve um resultado ou um erro. Por exemplo, carregar dados de um servidor.

  • StreamBuilder trabalha com um Stream — é um fluxo de dados que pode emitir múltiplos eventos ao longo do tempo. Por exemplo, atualizações de dados em tempo real ou eventos de entrada do utilizador.

Exemplo de uso do FutureBuilder:

FutureBuilder<String>(
  future: fetchData(),
  builder: (context, snapshot) {
    if (snapshot.connectionState == ConnectionState.waiting) {
      return CircularProgressIndicator();
    } else if (snapshot.hasError) {
      return Text('Erro: \\${snapshot.error}');
    } else {
      return Text('Dados: \\${snapshot.data}');
    }
  },
)

Exemplo de uso do StreamBuilder:

StreamBuilder<int>(
  stream: counterStream(),
  builder: (context, snapshot) {
    if (!snapshot.hasData) {
      return CircularProgressIndicator();
    }
    return Text('Contador: \\${snapshot.data}');
  },
)

Assim, escolha o FutureBuilder para operações únicas e o StreamBuilder para dados em fluxo.