CodeBlanks Logo Icon CodeBlanks

Future

Future ile asenkron işlemi öğrenirsin.

Future

Bir Future, henüz tamamlanmamış bir işlemin sonuçunu temsil eder. Asenkron bir işlem başlatılır ve sonuç daha sonra gelir. Örneğin ağ çağrısı, dosya okuma ya da zamanlayıcı. Future<int> ileride bir int değeri taşıyacak olan Future'dır.

Bir Future üç durumdan birinde bulunur: pending (beklemede), completed (tamamlandı, değerle) veya errored (hata ile bitti). Future.value(42) hemen 42 değeriyle tamamlanan bir Future yaratır. Future.delayed(Duration(seconds: 1), () => 42) 1 saniye sonra tamamlanır. Sonucu beklemek için then veya await kullanılır; bir sonraki derste göreceğiz.

Future oluştur

En basit Future, Future.value(...) ile yaratılır. Hemen tamamlanır ve verdiğin değeri taşır. final f = Future.value("hazır");. Bu, asenkron bir işlemin sonuçunu taklit etmek için kullanışlıdır. Future.error(Exception("hata")) ise hata ile biten bir Future yaratır.

Gecikmeli bir Future için Future.delayed kullanılır. Future.delayed(Duration(milliseconds: 100), () => 42) 100 ms sonra 42 ile tamamlanır. Duration sınıfı zaman aralığını taşır; saniye, milisaniye, dakika gibi birimlerle. Sonuç geldiğinde ne yapılacağını bir sonraki adımda göreceğiz. Henüz değerini almıyoruz; Future nesnesini tutuyoruz.

Uygulama Sıra sende: Future ve then

Future.value(42) ile bir Future oluştur. .then((v) => print(v)) ile değerini yazdır. Böylece Future tamamlandığında değer ekrana gelir.

Başlangıç kodu

main.dart
void main() {
  // Bir değer Future'ı oluştur
  // tamamlandığında değerini yazdır
}

Örnek çözüm

main.dart
void main() {
  Future.value(42).then((v) => print(v));
}

Beklenen çıktı

42

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Future<T> neyi temsil eder?

main.dart
Future<int> f = Future.value(42);
  • Bir hata nesnesi
  • Şimdiki bir T değeri
  • İleride gelecek bir T değeri Doğru cevap
  • Bir döngüyü

Açıklama: Future<T> ileride bir T değeri taşır.

2 Future.value

Soru
final f = ____.value(42);
Cevap
final f = Future.value(42);

Açıklama: Future.value anında tamamlanan Future yaratır.

3 Future eşleştir

Kavram Anlamı
Future<T> ileride bir T değeri
Future.value anında tamamlanır
Future.delayed gecikmeli tamamlanır
pending henüz bitmemiş durum

Başlangıç bölümündeki tüm dersler