Sobes.tech
Junior

Flutter-də FutureBuilder nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Asinxron məlumatlar əsasında interfeys qurmaq üçün widget, Future əsasında.

Əsas parametrlər:

  • future: Nəzarət ediləcək Future nümunəsi.
  • initialData: future tamamlanmadan əvvəl göstərilən məlumatlar.
  • builder: (AsyncWidgetBuilder) hər future vəziyyətində çağırılan və BuildContextAsyncSnapshot alan funksiya.

AsyncSnapshot vəziyyətləri:

  • ConnectionState.none: Future hələ başlamayıb.
  • ConnectionState.waiting: Future icra olunur.
  • ConnectionState.active: (Nadir) Future müvəqqəti məlumatlar qaytardı.
  • ConnectionState.done: Future tamamlandı (uğurlu və ya xəta ilə).

İstifadə nümunəsi:

// Tutaq ki, bizdə `Future<String>` qaytaran funksiya var
Future<String> fetchData() async {
  await Future.delayed(Duration(seconds: 2)); // Şəbəkə sorğusunun simulasyonu
  return "Məlumatlar yükləndi!";
}

// ... widgetin build metodunda:
@override
Widget build(BuildContext context) {
  return FutureBuilder<String>(
    future: fetchData(), // Bizim Future
    builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
      if (snapshot.connectionState == ConnectionState.waiting) {
        // Future işləyərkən yükləmə göstəricisi göstəririk
        return CircularProgressIndicator();
      } else if (snapshot.hasError) {
        // Future xəta ilə bitərsə, xəta mesajı göstəririk
        return Text('Xəta: ${snapshot.error}');
      } else {
        // Future uğurla tamamlandıqda məlumatları göstəririk
        return Text('Nəticə: ${snapshot.data}');
      }
    },
  );
}

Üstünlüklər:

  • UI-də asinxron əməliyyatların idarə olunmasını asanlaşdırır.
  • Future-in vəziyyəti dəyişdikcə UI avtomatik yenidən qurulur.
  • Məlumatların yüklənməsi və UI quruluşunun loqikasını aydın şəkildə ayırır.

Çatışmazlıqlar:

  • build metodunda yaradılan Future lazımsız yenidən qurmalara səbəb ola bilər. Future-u bir dəfə yaratmaq (məsələn, initState-də) tövsiyə olunur.