Sobes.tech
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ı:

  1. 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.
  2. 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.
  3. İstifadəçi qarşılıqlı əlaqələrinin işlənməsi: Sürüşdürməni izləmək, Draggable / DragTarget.
  4. 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
  }
}