Mobil Uygulama

Flutter ile Mobil Uygulama: Tek Kod Tabanından İki Mağaza

Flutter tek kod tabanından iOS ve Android uygulaması üretir. Ne zaman işe yarar, ne zaman ayrı native ekip gerekir, gerçek örneklerle anlatıyoruz.

rabbitclip ekibiYayın: 5 dk okuma

Kısa cevap

Flutter, iOS ve Android uygulamasını aynı kod tabanından üretir. Bir ekip bir kez yazar, iki mağazaya aynı anda çıkar. Ayrı native ekip kurmadan iki platformu da kapsamak isteyen küçük ve orta ölçekli işletmeler için en pratik yoldur.

Bir işletme mobil uygulama kararı verdiğinde önündeki soru genelde 'hangi teknoloji' değil, 'kaç ekip' olur. iOS için Swift, Android için Kotlin yazmak iki ayrı geliştirme hattı, iki ayrı test süreci, iki ayrı hata kaydı demektir. Flutter bu ayrımı büyük ölçüde ortadan kaldırır ve tek bir ekibin iki platformu birlikte taşımasını mümkün kılar.

Flutter tam olarak ne yapar

Flutter, Google'ın geliştirdiği ve Dart dilinde yazılan bir arayüz çerçevesidir; tek kod tabanından iOS, Android, web ve masaüstü için çalışan uygulama üretir. Uygulamanın arayüzünü kendi çizim motoruyla çizer, bu yüzden aynı buton, aynı geçiş animasyonu her iki platformda birebir aynı görünür.

Kod, mağazaya giderken native koda derlenir; tarayıcı içinde çalışan bir web sayfası değildir. Bu ayrım önemli, çünkü performans ve mağaza onayı açısından Flutter uygulamaları native uygulamalarla aynı kategoride değerlendirilir.

Tek kod tabanı gerçekte ne kazandırır

En somut kazanç zamandır. Bir özellik eklendiğinde iki platformda ayrı ayrı yazılmaz, bir kere yazılır, iki mağazaya birlikte gider. Bir hata bulunduğunda düzeltme tek yerde yapılır.

İkinci kazanç bakımdır. Uygulama yayına çıktıktan sonra sürüm takibi, kütüphane güncellemeleri, işletim sistemi uyumluluğu tek bir kod tabanı üzerinden yürütülür. Bu, küçük bir ekiple uzun vadede uygulamayı ayakta tutabilmek demektir.

Karar verirken bakılacak kriter basittir: uygulamanın iş mantığı (formlar, listeler, sipariş akışı, bildirimler) platformdan bağımsız mı, yoksa her platformda farklı mı davranmalı. Birincisi doğruysa Flutter zaman kazandırır; ikincisi doğruysa kazanç daralır.

Hangi işletmeye uymaz

Flutter, her mobil ihtiyacın cevabı değildir. Uygulamanın tek işi az sayıda içerik göstermekse ve kullanıcı zaten günde birkaç kez açıyorsa, bir PWA aynı işi çok daha düşük maliyetle görebilir; bu durumda ayrı bir mağaza uygulaması yazmak gereksiz bir yatırım olur.

Ekipte zaten güçlü bir native yazılım kadrosu varsa ve uygulamanın kapsamı tek platforma özgü, donanıma yakın işler ağırlıklıysa, Flutter'a geçiş ek bir öğrenme yükü getirir ama karşılığında kazanılan zaman sınırlı kalır. Bu durumda mevcut native ekiple devam etmek daha mantıklıdır.

Bu iki durumu ayırt etmenin pratik yolu şudur: uygulamanın ilk sürümünde planlanan ekranların kaçında donanıma özgü bir işlev var, sorusunu sormak. Cevap 'çok az' ise Flutter uygun; cevap 'ekranların çoğu' ise native ekip daha az sürprizle ilerler.

Sık yapılan hatalar

En sık görülen hata, Flutter'ı seçtikten sonra iki platformda da gerçek cihazda test etmeyi atlamaktır. Aynı kod her iki platformda çalışır ama klavye davranışı, bildirim izni akışı ve donanım geri bildirimi (titreşim gibi) platforma göre küçük farklar gösterebilir; bu farklar yalnız gerçek cihazda görülür.

İkinci hata, mağaza gereksinimlerini (uygulama boyutu, izin metinleri, simge kuralları) baştan değil, gönderim aşamasında düşünmektir. Bu, App Store ve Google Play yayın sürecini yazımızda anlattığımız gibi, iyi hazırlanmış bir Flutter uygulamasının bile ilk seferde reddedilmesine yol açabilir.

  • Her iki platformda da gerçek cihaz testi yapılmadan yayına alma
  • Mağaza izin metinlerinin ve simge kurallarının geliştirme bitene kadar ertelenmesi
  • Platform kanalı gerektiren bir özelliğin proje sonuna bırakılması

Flutter'ın yetmediği durumlar var mı

Var. Uygulama; artırılmış gerçeklik, gelişmiş kamera işleme ya da platforma özgü donanım erişimi gerektiren bir işi yoğun biçimde yapıyorsa, o parça için platform kanalları üzerinden native kod yazmak gerekebilir. Flutter bunu destekler ama sıfırdan native yazmaktan farklıdır.

Ayrıca iOS ve Android'in kendine özgü tasarım dilini birebir, piksel hizasında yansıtmak isteyen markalar için ek işçilik gerekebilir. Çoğu ticari uygulama için bu fark kullanıcı tarafından fark edilmez; marka kimliği çok sıkı tanımlıysa konuşulması gereken bir konudur.

Bir örnek: bayi uygulaması

Bir zemin kaplama üreticisinin bayi ağı stok durumunu ve sipariş takibini telefondan görmek istedi. Ayrı iki ekip kurmak yerine tek Flutter ekibiyle ilerledik; aynı arayüz, aynı iş mantığı, iki mağazada aynı anda yayınlandı.

Bayilerden gelen geri bildirimle eklenen her yeni özellik tek kod tabanında yazıldı, tek test sürecinden geçti. İki ayrı ekip senkron çalışsaydı bu döngü çok daha uzun sürerdi.

Bu örnekte kararı kolaylaştıran şey, uygulamanın işinin platformdan bağımsız olmasıydı: stok listesi, sipariş formu ve bildirim, iOS'ta da Android'de de aynı davranıyordu. Platforma özgü bir donanım kullanımı ya da tasarım zorunluluğu olsaydı, karar muhtemelen farklı çıkardı.

Yayın ve bakım tarafında değişen ne

Tek kod tabanı, App Store ve Google Play'e gönderilecek iki ayrı paket üretir ama kaynak kod tektir. Güncelleme çıktığında iki mağazaya da aynı sürüm numarasıyla, aynı gün gönderilebilir.

Bu, bakım maliyetini düşürmenin ötesinde bir şey: kullanıcı tarafında iki platformun da aynı anda güncel kalması demektir. Bir platformda özellik gecikmesi yaşanmaz.

Bakım tarafındaki ayrıntılar, uygulama bakımı ve sürüm yönetimi yazımızda anlattığımız takvime aynen bağlanır; tek kod tabanı bu takvimi iki kat değil, tek kat işletmeyi mümkün kılar.

Flutter, ayrı native ekip kurmadan iki mağazaya birden çıkmak isteyen işletmeler için makul bir yoldur; sınırlarını bilerek kullanıldığında hız ve bakım kolaylığı kazandırır, bilinmeden kullanıldığında ise gönderim aşamasında sürpriz çıkarabilir. Uygulamanızın kapsamı platform kanalı gerektirecek kadar özel mi, yoksa standart bir iş uygulaması mı, bunu birlikte konuşabiliriz.

Sık sorulanlar

Flutter uygulamalar native kadar hızlı mı çalışır?

Çoğu ticari uygulama için evet; Flutter kendi çizim motoruyla çalışır ve kullanıcı gözle fark edilir bir gecikme yaşamaz.

Flutter ile kamera, konum, bildirim gibi native özellikler kullanılabilir mi?

Evet, resmi paketler ve gerektiğinde platform kanalları üzerinden bu özelliklere erişilir.

Mevcut native uygulamayı Flutter'a taşımak mantıklı mı?

Duruma bağlı; çalışan bir uygulamayı sıfırdan yeniden yazmak yerine, yeni özellik ihtiyacı ve mevcut bakım yükü birlikte, somut olarak değerlendirilir.

Ekibin Flutter öğrenmesi ne kadar sürer?

Dart nispeten kolay öğrenilen bir dil, ama sağlam mimari kurmak deneyim ister; bu yüzden ilk projede deneyimli bir ekiple çalışmak zaman kazandırır ve ilerideki bakımı da kolaylaştırır.

Paylaş

İlgili hizmetYazılım GeliştirmeFikri çalışan bir ürüne dönüştürmek göründüğünden uzun sürer. Web ve mobil uygulamadan iş süreçlerinizi otomatikleştiren özel sistemlere kadar, sade ve sağlam yazılımlar kurarız.

İlgili yazılar

Nereden başlayacağınızı bilmiyorsanız, sorun değil; doğru yerdesiniz.

Aklınızdaki proje netleşmiş de olabilir, henüz bir fikir hâlinde de. İkisi de olur. Kısa bir görüşmeyle nerede olduğunuzu, nereye gidebileceğinizi birlikte konuşuruz.

Görüşme ayarlayalım
Projeyi konuşalım