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 пакети колдонулат, ал трансформациялоо, фильтрлөө жана бириктирүү үчүн бай инструменттер топтомун камсыздайт.