Completer
- Dart kursu
- Orta seviye
- Ders 62/116
- 5 dk
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
import 'dart:async';
void main() async {
// Completer<String> oluştur, complete ile değer ver, future'ı bekle ve yazdır
}Örnek çözüm
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
var c = ____<String>();
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?
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 |