Sobes.tech
Junior — Middle

¿En qué se diferencian los componentes StreamBuilder y Future al trabajar con datos asíncronos en Flutter?

sobes.tech AI

Respuesta de la IA

En Flutter, FutureBuilder y StreamBuilder se utilizan para trabajar con datos asíncronos, pero difieren en el tipo de fuente de datos:

  • FutureBuilder trabaja con un objeto Future — es una operación asíncrona de una sola vez que devuelve un resultado o un error. Por ejemplo, cargar datos desde un servidor.

  • StreamBuilder trabaja con un Stream — es un flujo de datos que puede emitir múltiples eventos a lo largo del tiempo. Por ejemplo, actualizaciones de datos en tiempo real o eventos de entrada del usuario.

Ejemplo de uso de FutureBuilder:

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

Ejemplo de uso de StreamBuilder:

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

Por lo tanto, elige FutureBuilder para operaciones de una sola vez y StreamBuilder para datos en flujo.