Sobes.tech
Junior

Flutter'da akışlar ne için kullanılır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Flutter'da akışlar (streamler), asenkron olay dizilerini işlemek için kullanılır.

Ana kullanım durumları:

  1. Veri değişikliklerine tepki verme: Redux, BLoC desenleri, uygulamanın durumunu yönetmek ve değişiklikler sırasında UI'yi reaktif olarak güncellemek için streamleri kullanır.
  2. Akış verileriyle çalışma: Ağ üzerinden veri alma (örneğin, WebSocket), dosyalardan okuma, cihaz sensörleriyle çalışma.
  3. Kullanıcı etkileşimlerini işleme: Kaydırma takibi, Draggable / DragTarget.
  4. Asenkron işlemler: Arka planda görevleri yürütme ve sonuçları hazır oldukça alma.

Anahtar kavramlar:

  • Stream: Asenkron olayların dizisi. Bir stream 0 veya daha fazla olay yayabilir ve sonra sona erebilir (başarıyla veya hata ile).
  • StreamSubscription: Bir stream'e abone olmayı temsil eder. Olayları almak ve aboneliği yönetmek (duraklatmak, devam ettirmek, iptal etmek) için kullanılır.
  • Sink: Verileri stream'e eklemek için kullanılır.
  • StreamBuilder: Yeni veriler alındığında yeniden yapılandırılan widget.
// StreamBuilder kullanımı örneği
StreamBuilder<int>(
  stream: counterStream, // Sizin streaminiz
  builder: (BuildContext context, AsyncSnapshot<int> snapshot) {
    if (snapshot.hasError) {
      return Text('Hata: \\${snapshot.error}');
    }
    switch (snapshot.connectionState) {
      case ConnectionState.none:
        return Text('Bekleniyor...');
      case ConnectionState.waiting:
        return CircularProgressIndicator();
      case ConnectionState.active:
        return Text('Değer: \\${snapshot.data}');
      case ConnectionState.done:
        return Text('Stream tamamlandı. Son değer: \\${snapshot.data}');
    }
  },
)
// Basit bir stream örneği, sayıları yayar
Stream<int> countStream(int max) async* {
  for (int i = 0; i <= max; i++) {
    await Future.delayed(Duration(seconds: 1));
    yield i; // Değeri yayar
  }
}