Junior
Flutter-də axınlar nə üçün istifadə olunur?
sobes.tech Süni İntellekt
AI-dan cavab
Flutter-da axınlar (streamlər) asinxron hadisələrin ardıcıllığını idarə etmək üçün istifadə olunur.
Əsas istifadə halları:
- Məlumat dəyişikliklərinə reaksiya vermək: Redux, BLoC nümunələri tətbiqin vəziyyətini idarə etmək və dəyişikliklər zamanı UI-ni reaktiv şəkildə yeniləmək üçün axınlardan istifadə edir.
- Axın məlumatları ilə işləmək: Şəbəkə vasitəsilə məlumat alma (məsələn, WebSocket), fayllardan oxuma, cihaz sensorları ilə işləmək.
- İstifadəçi qarşılıqlı əlaqələrinin işlənməsi: Sürüşdürməni izləmək, Draggable / DragTarget.
- Asinxron əməliyyatlar: Fon rejimində tapşırıqları yerinə yetirmək və nəticələri hazır olduqda almaq.
Əsas anlayışlar:
- Stream: Asinxron hadisələrin ardıcıllığı. Stream 0 və ya daha çox hadisə yayabilir və sonra (uğur və ya xəta ilə) bitə bilər.
- StreamSubscription: Stream-ə abunəni təmsil edir. Hadisələri almağa və abunəliyi idarə etməyə imkan verir (dayandırmaq, davam etdirmək, ləğv etmək).
- Sink: Stream-ə məlumat əlavə etmək üçün istifadə olunur.
- StreamBuilder: Stream-dən yeni məlumatlar alındıqda yenidən qurulan widget.
// StreamBuilder istifadə nümunəsi
StreamBuilder<int>(
stream: counterStream, // Sizin stream
builder: (BuildContext context, AsyncSnapshot<int> snapshot) {
if (snapshot.hasError) {
return Text('Xəta: \\${snapshot.error}');
}
switch (snapshot.connectionState) {
case ConnectionState.none:
return Text('Gözləyir...');
case ConnectionState.waiting:
return CircularProgressIndicator();
case ConnectionState.active:
return Text('Dəyər: \\${snapshot.data}');
case ConnectionState.done:
return Text('Stream tamamlandı. Son dəyər: \\${snapshot.data}');
}
},
)
// Sadə bir stream nümunəsi, ədədləri yayır
Stream<int> countStream(int max) async* {
for (int i = 0; i <= max; i++) {
await Future.delayed(Duration(seconds: 1));
yield i; // Dəyəri yayır
}
}