Junior
Flutterдеги FutureBuilder эмне?
sobes.tech AI
AIден жооп
Асинхрондуу маалыматтарга негизделген интерфейс түзүүчү виджет, ал Future аркылуу алынган.
Негизги параметрлер:
future: Байкоо салынуучуFutureобъекти.initialData:futureаяктагандан чейин көрсөтүлүүчү маалыматтар.builder: (AsyncWidgetBuilder) функция, алfutureөзгөргөн сайын чакырылат жанаBuildContextмененAsyncSnapshotалат.
AsyncSnapshot абалы:
ConnectionState.none: Future дагы ишке кирише элек.ConnectionState.waiting: Future иштеп жатат.ConnectionState.active: (Аз кездешет) Future аралык маалыматтарды кайтарды.ConnectionState.done: Future аяктады (жакшы же каталар менен).
Колдонуу мисалы:
// Бизде String түрүндөгү Future кайтарган функция бар деп ойлойлу
Future<String> fetchData() async {
await Future.delayed(Duration(seconds: 2)); // Тармактык суроо-талабды имитациялоо
return "Маалымат жүктөлдү!";
}
// ... виджеттің build методу:
@override
Widget build(BuildContext context) {
return FutureBuilder<String>(
future: fetchData(), // Биздин Future
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
// Future иштеп жатканда жүктөө индикаторун көрсөтүү
return CircularProgressIndicator();
} else if (snapshot.hasError) {
// Каталар болсо катаны билдирүү
return Text('Ката: ${snapshot.error}');
} else {
// Ийгиликтүү аяктагандан кийин маалыматты көрсөтүү
return Text('Жыйынтык: ${snapshot.data}');
}
},
);
}
Артыкчылыктары:
- UI менен асинхрондуу операцияларды жеңилдетет.
Futureабалы өзгөргөндө автоматтык түрдө UI кайра түзүлөт.- Маалымат жүктөө логикасы менен UI түзүү логикасын так бөлөт.
Кемчиликтери:
buildметоду ичиндеFutureтүзүлсө, ашыкча кайра чийүү мүмкүн.Futureбир жолу түзүлүшү керек (мисалы,initStateичинде).