Junior
Flutter'da FutureBuilder nima?
sobes.tech AI
AIdan javob
Asinxron ma'lumotlar asosida interfeys qurish uchun vidjet, Future dan olingan.
Asosiy parametrlari:
future: KuzatiladiganFuturenusxasi.initialData:futuretugashidan oldin ko'rsatiladigan ma'lumotlar.builder: (AsyncWidgetBuilder) har birfutureholatidagi o'zgarishda chaqiriladigan vaBuildContexthamdaAsyncSnapshotoladigan 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.
Futureholati o'zgarganda UI avtomatik ravishda yangilanadi.- Ma'lumotlarni yuklash va UI qurish logikasini aniq ajratadi.
Kamchiliklari:
buildmetodida yaratilganFuturekeraksiz qayta qurilishga olib kelishi mumkin.Futureni bir marta yaratish tavsiya etiladi (masalan,initStateda).