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
Futureobjektu — 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.