Sobes.tech
Junior

Mis on FutureBuilder Flutteris?

sobes.tech AI

Vastus AI-lt

Kasutajaliidese koostaja, mis põhineb asünkroonsetel andmetel, mis saadakse Future kaudu.

Peamised parameetrid:

  • future: jälgitav Future näide.
  • initialData: Andmed, mis kuvatakse enne future lõpetamist.
  • builder: Funktsioon (AsyncWidgetBuilder), mis kutsutakse iga kord, kui future olek muutub ning saab BuildContext ja AsyncSnapshot.

AsyncSnapshot olekud:

  • ConnectionState.none: Future pole veel alustanud.
  • ConnectionState.waiting: Future on töös.
  • ConnectionState.active: (Harva) Future on tagastanud vaheandmed.
  • ConnectionState.done: Future on lõpetatud (õnnestunult või veaga).

Kasutusnäide:

// Oletame, et meil on funktsioon, mis tagastab `Future<String>`
Future<String> fetchData() async {
  await Future.delayed(Duration(seconds: 2)); // Võrgu päringu imitatsioon
  return "Andmed on laetud!";
}

// ... widgeti `build` meetodis:
@override
Widget build(BuildContext context) {
  return FutureBuilder<String>(
    future: fetchData(), // Meie Future
    builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
      if (snapshot.connectionState == ConnectionState.waiting) {
        // Kuvame laadimisindikaatori, kuni Future töötab
        return CircularProgressIndicator();
      } else if (snapshot.hasError) {
        // Kuvame veateate, kui Future lõppes veaga
        return Text('Viga: ${snapshot.error}');
      } else {
        // Kuvame andmed, kui Future on edukalt lõpetatud
        return Text('Tulemus: ${snapshot.data}');
      }
    },
  );
}

Eelised:

  • Lihtsustab töö asünkroonsete operatsioonidega UI-s.
  • Automaatselt uuendab UI, kui Future olek muutub.
  • Selgelt eristab andmete laadimise ja UI ehitamise loogika.

Miinused:

  • Võib põhjustada liigseid uuendusi, kui Future luuakse build meetodi sees. Soovitatav on Future luua üks kord (näiteks initState-is).