CodeBlanks Logo Icon CodeBlanks

Stream nedir?

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

main.dart
import 'package:flutter/material.dart';

// sayiAkisi fonksiyonunu ekle

void main() {
  final stream = sayiAkisi();
  stream.listen((deger) {
    print('değer: $deger');
  });
}

Örnek çözüm

main.dart
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

Soru
Stream<int> sayilar() async* {
  ____ 1;
  yield 2;
}
Cevap
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ç

Orta seviye bölümündeki tüm dersler