Sobes.tech
Junior — Middle

Kuo skiriasi StreamBuilder ir Future komponentai dirbant su asinchroniniais duomenimis Flutter?

sobes.tech AI

Atsakymas iš AI

Flutter'yje FutureBuilder ir StreamBuilder naudojami darbui su asinchroniniais duomenimis, tačiau jie skiriasi pagal duomenų šaltinio tipą:

  • FutureBuilder dirba su Future objektu — tai vienkartinė asinchroninė operacija, kuri grąžina rezultatą arba klaidą. Pavyzdžiui, duomenų įkėlimas iš serverio.

  • StreamBuilder dirba su Stream — tai duomenų srautas, kuris gali išsiųsti daug įvykių laiko atžvilgiu. Pavyzdžiui, realaus laiko duomenų atnaujinimai arba naudotojo įvesties įvykiai.

FutureBuilder naudojimo pavyzdys:

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

StreamBuilder naudojimo pavyzdys:

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

Todėl, pasirinkite FutureBuilder vienkartinėms operacijoms ir StreamBuilder srautiniams duomenims.