Junior — Middle
Czym różnią się komponenty StreamBuilder i Future podczas pracy z danymi asynchronicznymi w Flutterze?
sobes.tech AI
Odpowiedź od AI
W Flutterze FutureBuilder i StreamBuilder służą do pracy z danymi asynchronicznymi, ale różnią się pod względem typu źródła danych:
-
FutureBuilder działa z obiektem
Future— jest to jednorazowa asynchroniczna operacja, która zwraca wynik lub błąd. Na przykład ładowanie danych z serwera. -
StreamBuilder działa z
Stream— jest to strumień danych, który może emitować wiele zdarzeń w czasie. Na przykład, aktualizacje danych w czasie rzeczywistym lub zdarzenia wejścia użytkownika.
Przykład użycia FutureBuilder:
FutureBuilder<String>(
future: fetchData(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return CircularProgressIndicator();
} else if (snapshot.hasError) {
return Text('Błąd: \\${snapshot.error}');
} else {
return Text('Dane: \\${snapshot.data}');
}
},
)
Przykład użycia StreamBuilder:
StreamBuilder<int>(
stream: counterStream(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return CircularProgressIndicator();
}
return Text('Licznik: \\${snapshot.data}');
},
)
W związku z tym, wybierz FutureBuilder dla operacji jednorazowych i StreamBuilder dla danych strumieniowych.