Compute
- Dart kursu
- İleri seviye
- Ders 4/83
- 5 dk
compute ile basit isolate öğrenirsin.
compute fonksiyonu
compute, Flutter'ın sunduğu basit isolate yardımcısıdır. Tek bir fonksiyonu arka plan isolate'inde çalıştırır ve sonuçu ana isolate'e döndürür.
İmza: Future<R> compute<Q, R>(FutureOr<R> Function(Q) callback, Q message). callback top-level veya statik olmalıdır; message tek parametredir.
Manuel spawn + SendPort seremonisini gizler. Tek sonuç dönen ağır işler için idealdir: dosya ayrıştırma, görüntü işleme, büyük JSON.
compute vs Isolate.spawn
compute, Isolate.spawn'ın üstüne kurulu basit bir sarmaladır. Tek seferlik işleri kolaylaştırır: bir fonksiyon verirsin, bir sonuç alırsın.
Isolate.spawn ise uzun ömürlü isolate'ler için uygundur: mesajlaşma kanalları açık kalır, birden çok mesaj alıp gönderilir.
Seçim: tek sonuç → compute; sürekli haberleşme → Isolate.spawn + SendPort.
Uygulama compute ile kare hesapla
Top-level int kareAl(int x) => x * x; fonksiyonunu tanımla. main'i async yap; var result = await compute(kareAl, 7); ve print(result); ekle.
Başlangıç kodu
import 'package:flutter/foundation.dart';
void main() {
// kareAl fonksiyonunu tanımla (main dışında)
// async yap; compute ile kareAl(7) çağrısı ekle
}Örnek çözüm
import 'package:flutter/foundation.dart';
int kareAl(int x) => x * x;
void main() async {
var result = await compute(kareAl, 7);
print(result);
}Beklenen çıktı
49
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 compute ne zaman kullanılır?
- Sürekli akış gerektiğinde
- Bellek paylaşmak için
- UI çizimini hızlandırmak için
- Tek sonuç dönen ağır işlerde Doğru cevap
Açıklama: compute tek sonuç dönen ağır işler için idealdir.
2 compute parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
compute |
Arka plan yardımcısı |
callback |
Çalışacak fonksiyon |
message |
Tek girdi parametresi |
Future<R> |
Dönüş türü |
3 compute çağrısı
var result = await ____(kareAl, 7);
var result = await compute(kareAl, 7);
Açıklama: compute ile kareAl(7) arka planda çalışır.