Stream nedir?
- Flutter kursu
- Orta seviye
- Ders 27/99
- 4 dk
Stream'in zamanla birden çok değer ürettiğini öğrenirsin.
Stream nedir?
Stream, zamanla birden çok değer üretebilen bir veri akışıdır. Future tek bir değer üretirken, Stream sürekli değer yayınlamaya devam eder.
Stream<int> sayilar() async* {
yield 1;
yield 2;
yield 3;
}async* ve yield ile Stream üretirsin.
async* ve yield
Bir Stream üretmek için async* anahtar kelimesi ile işaretlenmiş bir fonksiyon yazarsın. yield ile her değeri yayınlarsın.
Stream<int> sayilar() async* {
yield 1;
yield 2;
}Her yield, akışa bir değer ekler.
Uygulama async* ile sayı akışı üret
sayiAkisi adında Stream<int> döndüren async* fonksiyon yaz. 0, 1 ve 2 değerlerini yield ile üret. main'de akışı dinleyip her değeri print('değer: $deger') ile yazdır.
Başlangıç kodu
import 'package:flutter/material.dart';
// sayiAkisi fonksiyonunu ekle
void main() {
final stream = sayiAkisi();
stream.listen((deger) {
print('değer: $deger');
});
}Örnek çözüm
import 'package:flutter/material.dart';
Stream<int> sayiAkisi() async* {
yield 0;
yield 1;
yield 2;
}
void main() {
final stream = sayiAkisi();
stream.listen((deger) {
print('değer: $deger');
});
}Beklenen çıktı
değer: 0 değer: 1 değer: 2
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Stream ile Future arasındaki temel fark nedir?
- Stream yalnızca hata fırlatır
- Future tek değer, Stream birden çok değer üretir Doğru cevap
- Stream tek değer, Future çok değer üretir
- İkisi de hiç değer üretmez
Açıklama: Future tek bir değer üretir ve tamamlanır; Stream ise zamanla birden çok değer üretmeye devam eder.
2 yield ile değer üret
Stream<int> sayilar() async* {
____ 1;
yield 2;
}
Stream<int> sayilar() async* {
yield 1;
yield 2;
}
Açıklama: async* fonksiyon içinde yield ile akışa değer eklenir; her yield bir değer yayınlar.
3 Stream parçaları
| Kavram | Anlamı |
|---|---|
Stream |
Zamanla birden çok değer üreten akış |
async* |
Stream üreten fonksiyon işareti |
yield |
Akışa değer ekleme |
Future |
Tek bir değer üreten async sonuç |