Ders İçeriği
Uygulama geliştirme sürecinin önemli bir parçası da test etme ve dağıtımdır. Testler, uygulamanızın beklendiği gibi çalıştığından emin olmanızı sağlarken, dağıtım uygulamanızı kullanıcılara ulaştırmanın yoludur.
5.1. Widget Testleri, Unit Testleri, Entegrasyon Testleri
Flutter, üç ana test türünü destekler:
•Unit Testleri (Birim Testleri): Tek bir fonksiyonu, metodu veya sınıfı izole bir şekilde test eder. UI veya harici bağımlılıklar olmadan iş mantığını doğrulamak için kullanılır. Genellikle test paketi kullanılır.
•Widget Testleri: Tek bir widget'ın veya küçük bir widget ağacının UI ve etkileşimlerini test eder. Widget'ın doğru şekilde render edildiğini, kullanıcı etkileşimlerine doğru yanıt verdiğini ve durum değişikliklerini doğru yansıttığını doğrulamak için kullanılır. Genellikle flutter_test paketi kullanılır.
•Entegrasyon Testleri: Uygulamanın büyük bir bölümünü veya tamamını test eder. Farklı widget'ların ve servislerin birbiriyle nasıl etkileşim kurduğunu, uçtan uca senaryoların doğru çalıştığını doğrulamak için kullanılır. Genellikle integration_test paketi kullanılır.
Testler, uygulamanızın kalitesini artırmak, hataları erken yakalamak ve güvenle değişiklik yapabilmek için kritik öneme sahiptir.
5.2. Uygulama Optimizasyonu ve Performans
Flutter uygulamalarının performansı genellikle iyidir, ancak büyük ve karmaşık uygulamalarda veya belirli senaryolarda performans sorunları ortaya çıkabilir. Uygulamanızın hızlı ve akıcı çalışmasını sağlamak için bazı optimizasyon teknikleri:
•Gereksiz Yeniden Çizimleri Azaltma:
•const anahtar kelimesini mümkün olduğunca kullanın. Bir widget const ise, Flutter onu yeniden oluşturmak yerine mevcut örneği kullanır.
•StatelessWidget ve StatefulWidget'ları küçük ve odaklanmış tutun. Sadece değişmesi gereken kısımları setState ile güncelleyin.
•Consumer (Provider), BlocBuilder (BLoC) veya Obx (GetX) gibi durum yönetimi widget'larını kullanarak sadece ilgili widget'ların yeniden çizilmesini sağlayın.
•RepaintBoundary widget'ını kullanarak belirli bir alt ağacın yeniden çizimini izole edin.
•Resim Optimizasyonu:
•Doğru boyutlarda resimler kullanın. Çok büyük resimler bellek tüketimini artırır.
•Resimleri önbelleğe alın (CachedNetworkImage gibi paketler).
•Image.asset veya Image.network yerine FadeInImage gibi widget'ları kullanarak resimlerin yüklenmesini daha pürüzsüz hale getirin.
•ListView ve GridView Optimizasyonu:
•ListView.builder ve GridView.builder gibi builder constructor'larını kullanarak sadece ekranda görünen öğeleri oluşturun (lazy loading).
•itemExtent veya prototypeItem kullanarak liste öğelerinin boyutunu önceden belirleyin, bu kaydırma performansını artırır.
•Performans Araçları:
•Flutter DevTools: Uygulamanızın performansını (CPU, bellek, UI render süreleri) izlemek ve hata ayıklamak için güçlü bir araç setidir. flutter pub global activate devtools ile kurup flutter pub global run devtools ile başlatabilirsiniz.
•Timeline: DevTools içinde, uygulamanızın kare kare nasıl render edildiğini gösteren bir zaman çizelgesi aracıdır. Performans darboğazlarını tespit etmek için çok faydalıdır.
•Asenkron İşlemler: Uzun süren işlemleri (ağ istekleri, dosya okuma/yazma, karmaşık hesaplamalar) ana UI iş parçacığını (main UI thread) bloke etmeden asenkron olarak çalıştırın. async/await ve Future'lar bu amaçla kullanılır.
5.3. Uygulama Mağazalarına Dağıtım (Google Play Store, Apple App Store)
Uygulamanızı geliştirdikten ve test ettikten sonra, kullanıcıların erişebilmesi için uygulama mağazalarında yayınlamanız gerekir.
•Android (Google Play Store):
1.Uygulama İmzalaması: Uygulamanızı yayınlamak için bir yayın anahtarı (release key) oluşturmanız ve uygulamanızı bu anahtarla imzalamanız gerekir. Bu, uygulamanızın güvenliğini sağlar.
2.Uygulama Paketi Oluşturma: Terminalde flutter build apk --release veya flutter build appbundle --release komutunu kullanarak bir yayın APK'sı veya App Bundle oluşturun. App Bundle, Google Play Store tarafından önerilen dağıtım formatıdır.
3.Google Play Console: Bir Google Play Geliştirici Hesabı oluşturun (tek seferlik bir ücreti vardır). Play Console'a giriş yapın, yeni bir uygulama oluşturun ve oluşturduğunuz APK/App Bundle'ı yükleyin.
4.Mağaza Girişi: Uygulamanızın ekran görüntüleri, açıklaması, kategorisi, fiyatlandırması gibi mağaza giriş bilgilerini doldurun.
5.Politikalar ve Derecelendirme: Google Play politikalarına uygun olduğunuzdan emin olun ve içerik derecelendirme anketini tamamlayın.
6.Yayınlama: Uygulamanızı yayınlamak için bir yayın kanalı (dahili test, kapalı test, açık test, üretim) seçin ve yayınlayın.
•iOS (Apple App Store):
1.Geliştirici Hesabı: Bir Apple Geliştirici Programı hesabı oluşturmanız gerekir (yıllık ücreti vardır).
2.Xcode Kurulumu: macOS üzerinde Xcode'un kurulu olduğundan emin olun.
3.Uygulama Kimliği ve Sağlama Profili: Apple Developer hesabınızda uygulamanız için bir App ID oluşturun ve bir sağlama profili (provisioning profile) yapılandırın.
4.Uygulama Arşivi Oluşturma: Xcode'u açın, Flutter projenizin ios klasörünü açın. Cihaz olarak