Sobes.tech
Middle

Flutterде агымдар кандайча колдонулат?

sobes.tech AI

AIден жооп

Flutterдеги стримдер асинхрондуу окуялардын үздүк-үздүк тизмеги менен иштөө үчүн колдонулат. Алар реактивдүү программалоо парадигмасына негизделген жана маалыматтарды алар келип түшкөндө иштетүүнүн жолун камсыздайт.

Стримдердин негизги колдонмолору:

  • UI жаңыртуулары: Маалыматтагы өзгөрүүлөрдү (мисалы, тармактык суроолордон же базадан) байкап, виджеттерди автоматтык түрдө жаңыртуу.
  • BLoC/Cubit жана UI ортосунда байланыш: BLoC/Cubit Stream (же StateStreamable аркылуу) аркылуу абалдарды чыгарып, UI аларга жазылат.
  • Колдонуучу киргизүүлөрүн иштетүү: Киргизүү окуяларын байкап, көзөмөлдөө (мисалы, тексттик талаалардан).
  • WebSocket жана башка асинхрондуу операциялар: Реалдуу убакытта маалымат алуу.

Негизги түшүнүктөр:

  • Stream: Асинхрондуу окуялардын үздүк-үздүк тизмеги.
  • StreamController: Стримди башкаруу, маалыматтарды (add), каталарды (addError) кошуу жана жабуу (close) мүмкүнчүлүгүн берет.
  • StreamSubscription: Стримге активдүү жазылууну көрсөтүүчү объект, ал маалыматтарды (onData), каталарды (onError) жана бүтүшүн (onDone) иштетүүгө мүмкүндүк берет.

StreamBuilder менен колдонуу мисалы:

// Бизде бүтүн сандарды чыгаруучу стрим бар деп болжолдообуз
Stream<int> countStream = Stream.periodic(Duration(seconds: 1), (count) => count);

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return StreamBuilder<int>(
      stream: countStream, // Стримге жазылуу
      builder: (context, snapshot) {
        if (snapshot.connectionState == ConnectionState.waiting) {
          return CircularProgressIndicator(); // Стрим маалымат күтүп жатканда
        } else if (snapshot.hasError) {
          return Text('Error: ${snapshot.error}'); // Ката болсо
        } else {
          return Text('Count: ${snapshot.data}'); // Соңку маалыматтарды көрсөтүү
        }
      },
    );
  }
}

Стримдер:

  • Single-subscription: Бир гана угуучу кез келген учурда жазылса болот. Экинчи жолу жазылууга аракет кылуу катага алып келет.
  • Broadcast: Бир эле стримге көптөгөн угуучулар жазыла алат. Бардык активдүү угуучуларга маалыматтар жөнөтүлөт.

Стримдер менен иштөө үчүн көбүнесе rxdart пакети колдонулат, ал трансформациялоо, фильтрлөө жана бириктирүү үчүн бай инструменттер топтомун камсыздайт.