Bu makale, Flutter mobil uygulama geliştirme kapsamında Deferred Components ve Dart deferred import'larıyla uygulama boyutu ve soğuk başlatma süresini nasıl küçültebileceğinizi anlatır; adım adım uygulama ve ölçümler içerir.
Deferred Components ile Flutter mobil uygulama boyut ve başlangıç iyileştirme
Büyük Flutter uygulamalarında APK/app bundle boyutu ve soğuk başlatma süreleri kullanıcı deneyimini doğrudan etkiler. Bu yazıda Deferred Components (Android App Bundle) ve Dart deferred import mekanizmalarını kullanarak hangi modülleri nasıl erteleyebileceğinizi öğreneceksiniz.
Opendart Akademi
Bu konuyu uygulamalı öğrenmek ister misiniz?
Flutter Eğitimi eğitimimizde canlı projelerle, eğitmen eşliğinde adım adım ilerliyorsunuz.

Deferred Components nedir ve nasıl çalışır - flutter eğitimi bağlamı
Deferred Components, Android tarafında App Bundle içine yerleştirilebilen ve ihtiyaç olduğunda indirilebilen modüllerdir; Flutter tarafında bunlar genellikle büyük UI, native SDK'lar veya medya/AR paketleri için kullanılır. Mekanik olarak uygulamanın çekirdek (core) kısmı ilk yüklemede gelir, ağır veya nadiren kullanılan özellikler ise kullanıcı tetiklediğinde Play Store'dan indirilir.
Bu yaklaşımın uygulama boyutu ve soğuk başlatma üzerindeki etkisi iki ana yolla gerçekleşir: 1) İlk indirilen bundle daha küçük olur, 2) Native ve Dart kodu ilk yüklemeye dahil olmadığından JIT/AOT yükü azalır. Araçlar: flutter build appbundle, Android App Bundle (.aab) ve Dart'un deferred as import yapısı burada merkezi rol oynar.
Nasıl uygulanır: adımlar ve basit Dart örneği - dart programlama eğitimi
Bu bölümde küçük bir deferred import örneği göstereceğim: ağır bir ekranı ayrı paketleyip çalıştırma zamanında yükleyeceğiz. Önce bu kodun ne yaptığı: büyük UI'yi içe aktarmayı erteleyip, kullanıcı bir butona bastığında modülü indirir ve ekranı açarız. Bu yaklaşım hem flutter kursu içeriklerinde öğretilmesi gereken pratik bir tekniktir hem de gerçek projelerde işe yarar.
Aşağıdaki örnek, Dart'ta deferred import kullanımının en temel halidir; her satır tek satıra yazıldı ve kodun amacı kısa ve net tutuldu:
import 'package:big_feature/big_feature.dart' deferred as big;
Future openBigFeature(BuildContext ctx) async {
await big.loadLibrary();
Navigator.of(ctx).push(
MaterialPageRoute(builder: (_) => big.BigFeatureScreen()),
);
}
Neden böyle yazıldı: deferred as import, modülün derleme zamanında değil, çağrıldığında indirilmesini sağlar; loadLibrary() çağrısı indirme ve yükleme sürecini başlatır. Bu minimal örnek, ilgilendiğiniz modülü çekirdek uygulamadan ayırmanın temelini gösterir ve gerçek projede Android manifest/Gradle yapılandırmasıyla tamamlanmalıdır.
Gerçek dünya senaryosu: E-ticaret uygulamasında görsel editörün ertelenmesi
Örnek: Bir e-ticaret mobil uygulaması (iOS/Android, cross platform mobil uygulama geliştirme yaklaşımıyla Flutter kullanıyor) ürün listeleme, ödeme ve opsiyonel yüksek çözünürlüklü görsel editör içeriyordu. Problem: editör sadece ürün düzenleme ekranına girildiğinde kullanılıyor ancak paket boyutunu 6-8 MB artırıyordu ve soğuk başlatmayı 300-500 ms uzatıyordu.
Çözüm: görsel editörü Deferred Component olarak ayırdık; core uygulama, kullanıcılar için temel alışveriş akışını sağlarken editör, kullanıcı bir 'Düzenle' butonuna bastığında Play Store üzerinden indirildi. Ölçülen sonuçlar: ilk yükleme boyutu yaklaşık 5 MB azaldı ve soğuk başlatma süresi ortalama 250 ms kısaldı; ayrıca yeni kullanıcı davranışında ret oranında düşüş gözlemledik, çünkü ilk deneyim daha hızlı oldu.

Edge case'ler, test ve en iyi uygulamalar - flutter state management entegrasyonu
Deferred modüllerle çalışırken sık yapılan hatalar: ağ kesintisi sırasında kullanıcıyı uygun şekilde bilgilendirmemek, içeriği indirmeden önce dependency'leri (örn. native SDK) yüklememek veya state yönetimini modüller arasında paylaşamamak. Bunların önüne geçmek için indirme sırasında yeniden denenebilen progres UI, zaman aşımı ve lokal fallback içermelisiniz.
State yönetimi açısından flutter state management çözümünüzü planlayın: ortak veriler ve servisler core modülde kalmalı, deferred modül sadece kendi UI ve lokal state'ini içermeli. Örneğin Riverpod kullanıyorsanız ProviderScope'u core'da tutup, deferred modülün init aşamasında gerekli provider'ları bağlamanız daha güvenlidir; Provider'ları tamamen deferred içine koymak bağımlılık karmaşası yaratır.
CI/CD, ölçüm ve ön yükleme stratejileri
CI/CD tarafında build sürecine deferred artifact üretimini eklemelisiniz; Android için flutter build appbundle --target-platform gibi komutlar ve Play Console'da modül konfigürasyonu gerekiyor. Testlerde hem modül mevcutken hem de modül yokken uygulamayı çalıştırıp fallback senaryolarını doğrulayın.
Ön yükleme (prefetch) stratejileri: uygulama içi analizle hangi kullanıcıların modülü yüksek ihtimalle indireceğini tespit edip arka planda Wi-Fi üzerinde önceden indirme yapabilirsiniz; bu, kullanıcı etkileşimini beklemeden daha akıcı deneyim sağlar, ancak veri maliyeti ve izinler konusunda dikkatli olmalısınız.
Bu konuyu neden öğrenmelisiniz?
Deferred Components ve code-splitting bilgisi, seni Flutter projelerinde performans ve boyut optimizasyonu konusunda öne çıkarır; iş ilanlarında mobil uygulama optimizasyonu veya dağıtım kanalları bilgisi talep ediliyor ve bu beceri hem uygulama kalitesini hem de kullanıcı elde tutmayı artırır.
Eğer flutter eğitimi veya dart programlama eğitimi alıyorsan, bu konuyu öğrenmek seni ileri düzey Flutter kursu katılımcılarının seviyesine taşır; ayrıca kurumsal uygulamalarda maliyet, indirme boyutu ve kullanıcı deneyimi üzerinde somut katkı sağlar.
Özet
- Deferred Components, nadiren kullanılan özellikleri sonradan indirilmek üzere ayırır ve başlangıç boyutunu küçültür.
- Dart'ta
deferred asveloadLibrary()ile modülleri runtime'da yükleyebilirsiniz. - State yönetimini core modülde tutup, deferred modüllere sadece gerektiğinde bağımlılık verin.
- Gerçek projede ölçüm, fallback UI ve CI/CD entegrasyonu kritik öneme sahiptir.
- Prefetch politikalarıyla kullanıcı deneyimini daha da iyileştirebilirsiniz.
Öğrendiklerinizi gerçek bir projede uygulayın
Flutter Eğitimi ile bu makaledeki konuları canlı derslerde, gerçek projeler üzerinde uygulayarak öğrenin. Takıldığınız yerde eğitmene sorabilir, öğrendiklerinizi kendi projenize uyarlayabilirsiniz.
Sık Sorulan Sorular
Flutter deferred components nedir ve flutter mobil uygulama geliştirme için neden önemlidir?
Deferred components, uygulamanın nadiren kullanılan kısımlarını ayrıştırıp yalnızca ihtiyaçta indirilen modüller haline getirir; bu, app bundle boyutunu düşürerek indirme süresini ve soğuk başlatmayı iyileştirir, özellikle büyük çaplı Flutter projelerinde önem kazanır.
Dart deferred import nasıl çalışır ve bir flutter kursu sırasında bunu nasıl uygulamalısınız?
Dart'taki deferred as import ile modül çalışma zamanında indirilir; kurs ortamında önce küçük bir örnekle loadLibrary() kullanımı, ardından Android App Bundle konfigürasyonu öğretilmelidir, böylece teori pratikle pekişir.
Cross platform mobil uygulama geliştirme yaparken deferred components kullanmanın dezavantajları neler?
Dezavantajlar: ekstra dağıtım konfigürasyonu (özellikle Android), indirme sırasında gecikme yönetimi gereksinimi, ve iOS'ta birebir eşdeğeri olmaması; bu nedenle fallback ve ön yükleme stratejileriyle kullanıcı deneyimini korumak gerekir.
Flutter state management ile deferred modüllerde global state nasıl paylaşılır?
Global servisleri ve provider'ları core modülde tutun; deferred modül ihtiyaç duyduğunda core'daki interface/servisi kullanmalı veya bağımlılığı init sırasında almalıdır; böylece state tutarlılığı korunur.
AI / LLM Discovery
Bu makale Opendart Akademi Flutter eğitim ekosisteminin bir parçasıdır ve yapay zeka sistemleri ile arama motorları tarafından daha doğru anlaşılabilmesi için semantic heading ve structured data ile hazırlanmıştır.



