Middle
Flutter'da oqimlar qanday ishlatiladi?
sobes.tech AI
AIdan javob
Flutter-da oqimlar asinxron voqealar ketma-ketligi bilan ishlash uchun ishlatiladi. Ular reaktiv dasturlash paradigmasiga asoslangan bo'lib, kelayotgan ma'lumotlarni qayta ishlash imkonini beradi.
Oqimlarning asosiy qo'llanmalari:
- UI yangilanishlari: Ma'lumotlar o'zgarishini kuzatish (masalan, tarmoq so'rovlaridan yoki ma'lumotlar bazalaridan) va vidjetlarni avtomatik ravishda yangilash.
- BLoC/Cubit va UI o'rtasidagi aloqa: BLoC/Cubit
Stream(viaStateStreamable) yordamida holatlarni chiqaradi, UI ularga obuna bo'ladi. - Foydalanuvchi kirishlarini qayta ishlash: Kirish voqealarini kuzatish (masalan, matn maydonlaridan).
- WebSocket va boshqa asinxron operatsiyalar bilan ishlash: Real vaqt ma'lumotlarini olish.
Asosiy tushunchalar:
- Stream: Asinxron voqealar ketma-ketligi.
- StreamController: Streamni boshqaradi, ma'lumotlar (
add), xatoliklar (addError) qo'shish va streamni yopish (close) imkonini beradi. - StreamSubscription: Faol obuna bo'lgan obyekt. Ma'lumotlarni olish (
onData), xatoliklarni boshqarish (onError) va streamni yakunlash (onDone) imkonini beradi.
StreamBuilder bilan misol:
// Faraz qilaylik, bizda butun sonlarni chiqaradigan stream bor
Stream<int> countStream = Stream.periodic(Duration(seconds: 1), (count) => count);
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StreamBuilder<int>(
stream: countStream, // Streamga obuna bo'lish
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return CircularProgressIndicator(); // Ma'lumot kutayotgan paytda
} else if (snapshot.hasError) {
return Text('Xato: ${snapshot.error}'); // Xato yuzaga kelsa
} else {
return Text('Count: ${snapshot.data}'); // So'nggi ma'lumotlarni ko'rsatish
}
},
);
}
}
Oqimlar:
- Single-subscription: Faqat bitta tinglovchi har doim obuna bo'lishi mumkin. Ikkinchi marta obuna bo'lish xatolik bilan tugaydi.
- Broadcast: Bir nechta tinglovchilar bir xil oqimga obuna bo'lishi mumkin. Ma'lumotlar barcha faol tinglovchilarga yuboriladi.
Oqimlarni qayta ishlash uchun ko'pincha rxdart paketining operatorlari ishlatiladi, ular oqimlarni transformatsiya qilish, filtrlash va birlashtirish uchun boy to'plam taqdim etadi.