Junior
Ce este FutureBuilder în Flutter?
sobes.tech AI
Răspuns de la AI
Widget pentru construirea interfeței bazate pe date asincrone obținute din Future.
Parametri principali:
future: O instanță deFuturecare trebuie urmărită.initialData: Datele afișate înainte cafuturesă se finalizeze.builder: Funcție (AsyncWidgetBuilder) care este apelată la fiecare schimbare de stare afutureși primeșteBuildContextșiAsyncSnapshot.
Stările AsyncSnapshot:
ConnectionState.none: Future-ul nu a început încă.ConnectionState.waiting: Future-ul este în curs de execuție.ConnectionState.active: (Rareori pentru Future) Future-ul a returnat date intermediare.ConnectionState.done: Future-ul s-a încheiat (cu succes sau cu eroare).
Exemplu de utilizare:
// Să presupunem că avem o funcție care returnează un Future<String>
Future<String> fetchData() async {
await Future.delayed(Duration(seconds: 2)); // Simulare de solicitare de rețea
return "Date încărcate!";
}
// ... în metoda build a widget-ului:
@override
Widget build(BuildContext context) {
return FutureBuilder<String>(
future: fetchData(), // Future-ul nostru
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
// Afișăm un indicator de încărcare în timp ce Future-ul rulează
return CircularProgressIndicator();
} else if (snapshot.hasError) {
// Afișăm mesajul de eroare dacă Future-ul s-a încheiat cu eroare
return Text('Eroare: ${snapshot.error}');
} else {
// Afișăm datele dacă Future-ul s-a încheiat cu succes
return Text('Rezultat: ${snapshot.data}');
}
},
);
}
Avantaje:
- Facilitează gestionarea operațiilor asincrone în UI.
- Reconstruiește automat UI-ul la schimbarea stării
Future-ului. - Separă clar logica de încărcare a datelor de logica de construire a UI-ului.
Dezavantaje:
- Poate duce la re-construcții inutile dacă
Futureeste creat în interiorul metodeibuild. Se recomandă creareaFuture-ului o singură dată (de exemplu, îninitState).