CodeBlanks Logo Icon CodeBlanks

Completer

Completer ile manuel Future kontrolünü öğrenirsin.

Completer

Completer bir Future'i elle tamamlamak için kullanılır. Normalde Future'leri API'ler üretir; ama bazen kendi Future'ini oluşturup istediğin anda tamamlamak istersin. Completer bunu sağlar.

Örnek: var c = Completer<String>();. Bu, bir String Future üretir. c.complete('Tamam'); ile değeri verirsin. c.future ile Future'e erişir, await ile beklersin.

Completer dart:async kütüphanesinde bulunur; import 'dart:async'; gerekir. Gerçek uygulamalarda callback'leri Future'a çevirmek için kullanılır.

Completer akışı

Completer kullanmanın akışı şöyledir: önce Completer<T>() ile oluştur. Sonra complete(deger) ile değeri ver. Son olarak c.future ile Future'e eriş ve await ile bekle.

Örnek: var c = Completer<String>(); c.complete('Tamam'); var r = await c.future; print(r);. Çıktı: Tamam. complete çağrıldığında Future hemen tamamlanır.

Bu yapı, olay tabanlı API'leri Future'a çevirmek için kullanılır. Örneğin bir düğme tıklandığında Completer'ı tamamlarsın; await ile tıklamayı beklersin.

Uygulama Completer ile Future tamamla

import 'dart:async' zaten ekli. void main() async zaten yazılı. Completer<String>() oluştur. c.complete('Tamam') ile değeri ver. await c.future ile bekle ve sonuçu print ile yazdır.

Başlangıç kodu

main.dart
import 'dart:async';

void main() async {
  // Completer<String> oluştur, complete ile değer ver, future'ı bekle ve yazdır
}

Örnek çözüm

main.dart
import 'dart:async';

void main() async {
  var c = Completer<String>();
  c.complete('Tamam');
  var r = await c.future;
  print(r);
}

Beklenen çıktı

Tamam

Soru ve cevaplar

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

1 Completer oluşturma

Soru
var c = ____<String>();
Cevap
var c = Completer<String>();

Açıklama: Completer<String>() ile elle yönetilen Future oluşturulur.

2 Completer'ı tamamlamak için hangi metot çağrılır?

main.dart
var c = Completer<String>();
c.???('Tamam');
  • then
  • complete Doğru cevap
  • wait
  • close

Açıklama: complete metodu Future'e değer verir ve tamamlar.

3 Completer parçalarını eşleştir

Kavram Anlamı
Completer<String>() Oluşturma
c.complete('Tamam') Tamamlama
c.future Future erişimi
await c.future Bekleme

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