Junior — Middle
Mi a különbség a StreamBuilder és a Future komponensek között, amikor aszinkron adatokkal dolgozunk Flutterben?
sobes.tech MI
Válasz az MI-től
Flutterben a FutureBuilder és a StreamBuilder aszinkron adatok kezelésére szolgál, de különböznek az adatforrás típusában:
-
FutureBuilder egy
Futureobjektummal működik — ez egy egyszeri aszinkron művelet, amely eredményt vagy hibát ad vissza. Például adatok betöltése szerverről. -
StreamBuilder egy
Stream-mel működik — ez egy adatfolyam, amely több eseményt is kibocsáthat idővel. Például valós idejű adatfrissítések vagy felhasználói bemeneti események.
FutureBuilder használati példa:
FutureBuilder<String>(
future: fetchData(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return CircularProgressIndicator();
} else if (snapshot.hasError) {
return Text('Hiba: \\${snapshot.error}');
} else {
return Text('Adatok: \\${snapshot.data}');
}
},
)
StreamBuilder például:
StreamBuilder<int>(
stream: counterStream(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return CircularProgressIndicator();
}
return Text('Számláló: \\${snapshot.data}');
},
)
Ezért, egy egyszeri művelethez a FutureBuilder-t, folyam adatokhoz pedig a StreamBuilder-t válassza.