Sobes.tech
Junior

Kas ir FutureBuilder Flutter?

sobes.tech AI

Atbilde no AI

Lietotāja saskarnes būvētājs, kas balstīts uz asinhroniem datiem, kas iegūti no Future.

Galvenie parametri:

  • future: novērojams Future instances.
  • initialData: Dati, kas tiek rādīti pirms future pabeigšanas.
  • builder: Funkcija (AsyncWidgetBuilder), kas tiek izsaukta katru reizi, mainoties future stāvoklim, un saņem BuildContext un AsyncSnapshot.

AsyncSnapshot stāvokļi:

  • ConnectionState.none: Future vēl nav uzsākts.
  • ConnectionState.waiting: Future tiek izpildīts.
  • ConnectionState.active: (Retāk) Future ir atgriezis starpposma datus.
  • ConnectionState.done: Future ir pabeigts (sekmīgi vai ar kļūdu).

Piemērs lietošanai:

// Pieņemsim, mums ir funkcija, kas atgriež `Future<String>`
Future<String> fetchData() async {
  await Future.delayed(Duration(seconds: 2)); // Tīkla pieprasījuma imitācija
  return "Dati ielādēti!";
}

// ... widgeta `build` metodē:
@override
Widget build(BuildContext context) {
  return FutureBuilder<String>(
    future: fetchData(), // Mūsu `Future`
    builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
      if (snapshot.connectionState == ConnectionState.waiting) {
        // Rādām ielādes indikatoru, kamēr `Future` tiek izpildīts
        return CircularProgressIndicator();
      } else if (snapshot.hasError) {
        // Rādām kļūdas ziņojumu, ja `Future` beidzās ar kļūdu
        return Text('Kļūda: ${snapshot.error}');
      } else {
        // Rādām datus, ja `Future` veiksmīgi pabeigts
        return Text('Rezultāts: ${snapshot.data}');
      }
    },
  );
}

Priekšrocības:

  • Vienkāršo darbu ar asinhronām operācijām UI.
  • Automātiski pārveido UI, mainoties Future stāvoklim.
  • Skaidri atdala datu ielādes un UI būvniecības loģiku.

Trūkumi:

  • Var radīt liekas pārkrāsošanas, ja Future tiek radīts build metodē. Ieteicams Future radīt vienu reizi (piemēram, initState).