Sobes.tech
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 ичинде).