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ı:
- 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.
- Akış verileriyle çalışma: Ağ üzerinden veri alma (örneğin, WebSocket), dosyalardan okuma, cihaz sensörleriyle çalışma.
- Kullanıcı etkileşimlerini işleme: Kaydırma takibi, Draggable / DragTarget.
- 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
}
}