Sobes.tech
Junior — Middle

Qual è la differenza tra i componenti StreamBuilder e Future quando si lavora con dati asincroni in Flutter?

sobes.tech AI

Risposta dell'AI

In Flutter, FutureBuilder e StreamBuilder vengono utilizzati per lavorare con dati asincroni, ma differiscono per il tipo di fonte dati:

  • FutureBuilder lavora con un oggetto Future — è un'operazione asincrona una tantum che restituisce un risultato o un errore. Ad esempio, il caricamento di dati da un server.

  • StreamBuilder lavora con uno Stream — è un flusso di dati che può emettere molteplici eventi nel tempo. Ad esempio, aggiornamenti di dati in tempo reale o eventi di input utente.

Esempio di utilizzo di FutureBuilder:

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

Esempio di utilizzo di StreamBuilder:

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

Pertanto, scegliete FutureBuilder per operazioni singole e StreamBuilder per dati in streaming.