Junior
Was ist FutureBuilder in Flutter?
sobes.tech KI
Antwort von AI
Widget zum Erstellen einer Benutzeroberfläche basierend auf asynchronen Daten, die aus Future abgerufen werden.
Hauptparameter:
future: Eine Instanz vonFuture, die beobachtet werden soll.initialData: Daten, die vor Abschluss desfutureangezeigt werden.builder: Funktion (AsyncWidgetBuilder), die bei jeder Änderung desfutureaufgerufen wird undBuildContextsowieAsyncSnapshoterhält.
Zustände von AsyncSnapshot:
ConnectionState.none: Der Future hat noch nicht begonnen.ConnectionState.waiting: Der Future läuft.ConnectionState.active: (Selten bei Future) Der Future hat Zwischendaten zurückgegeben.ConnectionState.done: Der Future ist abgeschlossen (erfolgreich oder mit Fehler).
Anwendungsbeispiel:
// Angenommen, wir haben eine Funktion, die einen Future<String> zurückgibt
Future<String> fetchData() async {
await Future.delayed(Duration(seconds: 2)); // Simulation einer Netzwerkanfrage
return "Daten geladen!";
}
// ... im build-Methoden des Widgets:
@override
Widget build(BuildContext context) {
return FutureBuilder<String>(
future: fetchData(), // Unser Future
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
// Zeigt einen Ladeindikator, während der Future läuft
return CircularProgressIndicator();
} else if (snapshot.hasError) {
// Zeigt eine Fehlermeldung, wenn der Future mit Fehler endet
return Text('Fehler: ${snapshot.error}');
} else {
// Zeigt die Daten, wenn der Future erfolgreich abgeschlossen wurde
return Text('Ergebnis: ${snapshot.data}');
}
},
);
}
Vorteile:
- Vereinfacht die Arbeit mit asynchronen Operationen in der UI.
- Baut die UI automatisch neu auf, wenn sich der Zustand des
Futureändert. - Trennt klar die Logik des Ladens der Daten von der Logik des UI-Aufbaus.
Nachteile:
- Kann zu unnötigen Neuberechnungen führen, wenn der
Futureinnerhalb derbuild-Methode erstellt wird. Es wird empfohlen, denFutureeinmal zu erstellen (z.B. ininitState).