Sobes.tech
Junior

Flutter'da FutureBuilder nima?

sobes.tech AI

AIdan javob

Asinxron ma'lumotlar asosida interfeys qurish uchun vidjet, Future dan olingan.

Asosiy parametrlari:

  • future: Kuzatiladigan Future nusxasi.
  • initialData: future tugashidan oldin ko'rsatiladigan ma'lumotlar.
  • builder: (AsyncWidgetBuilder) har bir future holatidagi o'zgarishda chaqiriladigan va BuildContext hamda AsyncSnapshot oladigan funktsiya.

AsyncSnapshot holatlari:

  • ConnectionState.none: Future hali boshlanmadi.
  • ConnectionState.waiting: Future bajarilmoqda.
  • ConnectionState.active: (Kam hollarda) Future o'rta ma'lumotlarni qaytardi.
  • ConnectionState.done: Future yakunlandi (muvaffaqiyatli yoki xatolik bilan).

Foydalanish misoli:

// Faraz qilaylik, bizda `Future<String>` qaytaradigan funksiya bor
Future<String> fetchData() async {
  await Future.delayed(Duration(seconds: 2)); // Tarmoq so'rovi imitatsiyasi
  return "Ma'lumotlar yuklandi!";
}

// ... widgetning build metodida:
@override
Widget build(BuildContext context) {
  return FutureBuilder<String>(
    future: fetchData(), // Bizning Future
    builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
      if (snapshot.connectionState == ConnectionState.waiting) {
        // Future bajarilayotgan paytda yuklash indikatorini ko'rsatamiz
        return CircularProgressIndicator();
      } else if (snapshot.hasError) {
        // Future xato bilan tugasa xabar ko'rsatamiz
        return Text('Xato: ${snapshot.error}');
      } else {
        // Future muvaffaqiyatli tugasa ma'lumotlarni ko'rsatamiz
        return Text('Natija: ${snapshot.data}');
      }
    },
  );
}

Afzalliklari:

  • UI bilan asinxron operatsiyalarni boshqarishni osonlashtiradi.
  • Future holati o'zgarganda UI avtomatik ravishda yangilanadi.
  • Ma'lumotlarni yuklash va UI qurish logikasini aniq ajratadi.

Kamchiliklari:

  • build metodida yaratilgan Future keraksiz qayta qurilishga olib kelishi mumkin. Futureni bir marta yaratish tavsiya etiladi (masalan, initStateda).