Junior
Flutter'da FutureBuilder nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Asenkron veriler temel alınarak arayüz oluşturmak için widget, Future tabanlıdır.
Ana parametreler:
future: İzlenecekFutureörneği.initialData:futuretamamlanmadan önce gösterilen veriler.builder: (AsyncWidgetBuilder) herfuturedurumu değiştiğinde çağrılan veBuildContextileAsyncSnapshotalan fonksiyon.
AsyncSnapshot durumları:
ConnectionState.none: Future henüz başlamadı.ConnectionState.waiting: Future çalışıyor.ConnectionState.active: (Nadir) Future ara veriler döndürdü.ConnectionState.done: Future tamamlandı (başarılı veya hata ile).
Kullanım örneği:
// Diyelim ki, bize `Future<String>` döndüren bir fonksiyonumuz var
Future<String> fetchData() async {
await Future.delayed(Duration(seconds: 2)); // Ağ isteği simülasyonu
return "Veriler yüklendi!";
}
// ... widget'in build metodunda:
@override
Widget build(BuildContext context) {
return FutureBuilder<String>(
future: fetchData(), // Future'umuz
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
// Future çalışırken yükleme göstergesi göster
return CircularProgressIndicator();
} else if (snapshot.hasError) {
// Future hata ile biterse hata mesajı göster
return Text('Hata: ${snapshot.error}');
} else {
// Future başarıyla tamamlandıysa verileri göster
return Text('Sonuç: ${snapshot.data}');
}
},
);
}
Avantajlar:
- UI'da asenkron işlemlerle çalışma kolaylığı sağlar.
Futuredurum değiştikçe UI otomatik olarak yeniden çizilir.- Veri yükleme mantığı ve UI oluşturma mantığını net ayırır.
Dezavantajlar:
buildmetodunda oluşturulanFuturenedeniyle gereksiz yeniden çizimlere yol açabilir.Future'u bir kez oluşturmak (örneğin,initStateiçinde) önerilir.