Yazılım

Flutter Nedir? İşletme Uygulaması İçin Doğru Seçim mi?

Talha Aslan 15 dakikalık okuma 2 görüntülenme

Kısa cevap

Flutter nedir ve nasıl çalışır?

Flutter, Google'ın geliştirdiği açık kaynaklı bir arayüz çatısıdır (framework); Dart diliyle yazdığınız tek kod tabanından iOS, Android, web ve masaüstü uygulaması üretir. Arayüzü işletim sisteminin hazır bileşenlerine devretmez, kendi çizim motoruyla ekrana kendisi çizer. Bu yüzden iki platformda tutarlı görünüm verir.

Tüm detaylar ve örnekler için yazıya devam edin

Kısa tanım bu. Ancak işletme sahibi olarak asıl merak ettiğiniz şey başka: Flutter benim uygulamam için doğru seçim mi, yoksa ileride başıma iş açar mı? Bu rehberde Talha Aslan ve ekibi olarak sahada gördüğümüz karar noktalarını sırayla anlatıyoruz. Teknik terimleri ilk geçtiği yerde açıklıyoruz; böylece yazılım ekibinizle aynı dili konuşabilirsiniz.

Rehberin sonunda elinizde net bir kontrol listesi olacak. Hangi projede Flutter mantıklı, hangi projede başka bir yol daha sağlıklı, bakım yükü nasıl değişir; hepsini örnek senaryolarla ele alıyoruz.

Flutter nedir sorusunu işletme gözüyle nasıl okumalısınız?

Bir geliştirici için Flutter nedir sorusunun cevabı teknik bir mimari tarifidir. Sizin için ise üç soruya iner: maliyet, hız ve risk. Tek kod tabanı, iki ayrı ekip yerine tek ekiple iki mağazaya çıkma imkânı demektir. Kendi çizim motoru, tasarımın iki platformda aynı kalması demektir.

Öte yandan her kolaylığın bir bedeli var. Flutter uygulamanızı cihazın kendi bileşenleriyle değil, kendi katmanıyla çizer. Dolayısıyla platforma özgü yeni bir özellik çıktığında, bazen Flutter tarafının o özelliğe uyum sağlamasını beklemeniz gerekir. Ayrıca ekibinizin Dart bilmesi şarttır; bu dil JavaScript kadar yaygın değil.

Kısacası Flutter nedir sorusuna işletme cevabı şu: çoğu içerik, randevu, sipariş ve müşteri hizmeti uygulaması için hızlı ve tutarlı bir yol. Ama cihaz donanımına derinden bağlı ya da platformun en yeni özelliğini ilk gün isteyen projelerde dikkatli seçilmesi gereken bir araç.

Tek kod tabanı pratikte ne anlama geliyor?

Tek kod tabanı (single codebase), uygulamanın ekranlarını, iş kurallarını ve veri akışını bir kez yazmanız demektir. Aynı kodu derleyip hem App Store'a hem Google Play'e gönderirsiniz. Flutter'ın resmi mimari belgesi de çatının iOS, Android, web ve masaüstü arasında kod paylaşımı için tasarlandığını, aynı zamanda alttaki platform servislerine doğrudan erişebildiğini anlatıyor.

Yine de "tek kod" yüzde yüz ortak kod anlamına gelmez. Bildirim izinleri, ödeme akışları, kamera ya da konum gibi alanlarda platforma özel ayarlar yaparsınız. Örneğin iOS tarafında izin metinlerini, Android tarafında izin bildirimlerini ayrı ayrı düzenlersiniz. Bu farklar genellikle küçük kalır; fakat proje planında görünür olmalı.

  • Ortak kalan kısım: ekranlar, tasarım bileşenleri, iş mantığı, API (uygulama programlama arayüzü) çağrıları ve doğrulama kuralları.
  • Platforma göre ayrışan kısım: izin metinleri, mağaza ayarları, imzalama, bazı ödeme ve bildirim yapılandırmaları.
  • Gerekirse yerel kod: hazır eklentisi olmayan donanım ya da sistem özellikleri.

Uygulamanın sunucuyla nasıl konuştuğunu merak ediyorsanız API nedir rehberimiz bu katmanı sade bir dille anlatıyor.

Kendi çizim motoru neden önemli?

Flutter'ın en belirgin farkı burada. Resmi mimari belgeye göre Flutter her arayüz kontrolünün kendi sürümünü taşır; sistemin sunduğu düğmelere ve listelere devretmez. Yerel platformlarda Dart ile yazdığınız arayüz kodu makine koduna dönüşür ve çizimi Impeller adlı motor yapar. Impeller uygulamanın içinde gelir.

Bunun işletme açısından iki sonucu var. Birincisi, marka tasarımınız iPhone'da ve Android telefonda piksel düzeyinde aynı görünür. Özellikle kurumsal renkleri, özel düğmeleri ve animasyonları önemseyen markalar için bu büyük bir rahatlık. İkincisi, işletim sistemi kendi bileşenlerinin görünümünü değiştirdiğinde uygulamanız bu değişikliği kendiliğinden almaz.

Flutter bu boşluğu kısmen kapatır. Resmi platform uyarlama belgesi, sayfa geçiş animasyonlarını, kaydırma davranışını, yazı tipini ve bazı simgeleri çalıştığı platforma göre otomatik uyarladığını anlatıyor. Ayrıca anahtar, kaydırıcı ve uyarı penceresi gibi kontrollerin iOS'ta Cupertino karşılığını veren uyarlanabilir sürümleri var. Yani uygulama "yabancı" hissettirmez; ama tasarım kararlarını bilinçli vermeniz gerekir.

Dart dili ve hot reload geliştirme sürecini nasıl hızlandırır?

Dart, Google'ın geliştirdiği nesne yönelimli bir programlama dilidir. Flutter projeleri bu dille ilerler. Geliştirme sırasında uygulama bir sanal makinede çalışır; yayın sürümünde ise kod doğrudan ARM ya da Intel makine koduna dönüşür. Bu ikili yapı hem hızlı geliştirme hem de akıcı çalışma sağlar.

Hot reload (sıcak yeniden yükleme), kod değişikliğini uygulamayı kapatmadan çalışan sürüme aktarır. Flutter'ın hot reload belgesi, bu işlemin uygulamanın o anki durumunu koruduğunu belirtiyor. Örneğin sepet ekranındaki bir yazı tipini değiştirdiğinizde, sepete eklediğiniz ürünler kaybolmadan yeni görünümü saniyeler içinde görürsünüz.

Ancak sınırları var. Belgeye göre hot reload yalnız hata ayıklama (debug) modunda çalışır. Kotlin, Java, Swift ya da Objective-C tarafında yerel kod değiştirirseniz tam yeniden başlatma gerekir. Dolayısıyla hot reload tasarım turlarını hızlandırır; ama test ve yayın disiplininin yerini tutmaz.

Flutter işletme uygulamasında hangi güçlü yanları sunar?

Sahada Flutter'ı tercih ettiğimiz projelerde öne çıkan avantajlar genellikle şunlar oluyor. Bunlar garanti değil, doğru kurulmuş bir projede beklenebilecek eğilimler.

  • Tek ekip, iki mağaza: iOS ve Android için ayrı geliştirici grubu kurmadan iki platforma birlikte çıkarsınız.
  • Tutarlı marka görünümü: renkler, boşluklar ve animasyonlar iki platformda aynı kalır.
  • Hızlı tasarım turları: hot reload sayesinde müşteri geri bildirimini aynı toplantıda ekrana yansıtabilirsiniz.
  • Geniş eklenti ekosistemi: resmi belgeye göre yaygın senaryoları karşılayan binlerce eklenti (plugin) mevcut.
  • Yerel koda kapı açık: platform kanalları (platform channels) üzerinden Kotlin ya da Swift ile yazılmış özel kodla konuşabilirsiniz.
  • Web ve masaüstüne uzanma: aynı kod tabanından yönetim paneli ya da masaüstü sürüm üretme imkânı.

Bu avantajların hepsi aynı ağırlıkta değil. Örneğin web çıktısı, arama motoru görünürlüğü isteyen bir tanıtım sitesi için genellikle doğru araç değildir. Bu konuya aşağıda ayrıca değiniyoruz.

Flutter'ın zayıf yanları ve riskleri nelerdir?

Dürüst bir karar için zayıf yanları da masaya koymak gerekir. Flutter'ı öneren her ekip bu riskleri de anlatmalı.

  • Uygulama boyutu: Flutter çizim motorunu uygulamanın içinde taşır. Bu nedenle çok basit bir uygulama bile tamamen yerel bir eşdeğerinden daha büyük paket oluşturabilir.
  • Yeni platform özelliklerinde gecikme: Apple ya da Google yeni bir sistem bileşeni duyurduğunda, Flutter tarafındaki destek bazen sonradan gelir.
  • Eklenti kalitesi: topluluk eklentilerinin bakımı değişkendir. Terk edilmiş bir eklentiye bağımlı kalmak, ileride sürüm güncellemesini zorlaştırır.
  • Dart uzmanlığı: piyasada JavaScript bilen geliştirici daha yaygın. Ekip değişikliğinde Dart bilen birini bulmak zaman alabilir.
  • Erişilebilirlik ve sistem entegrasyonu: ekran okuyucu, büyük yazı tipi gibi ayarları test etmek ayrı özen ister.

Bu risklerin hiçbiri Flutter'ı kötü bir seçim yapmaz. Ancak hepsi proje planına ve bakım bütçesine yazılması gereken kalemler. Biz teklif aşamasında bu maddeleri tek tek konuşuyoruz.

Flutter ile React Native arasındaki fark nedir?

Çapraz platform (cross-platform) dünyasında Flutter'ın en sık karşılaştırıldığı rakip React Native. React Native'in çalışma mantığını ayrıntılı anlattığımız React Native nedir rehberini burada tekrar etmiyoruz. Aşağıdaki tablo yalnız karar anına yarayan farkları özetliyor.

ÖlçütFlutterReact Native
Programlama diliDartJavaScript ya da TypeScript
Arayüz çizimiKendi motoruyla kendisi çizerPlatformun yerel bileşenlerini kullanır
Görünüm tutarlılığıİki platformda aynıPlatform görünümüne daha yakın
Ekip bulmaDart bilen geliştirici gerekirWeb ekibi daha kolay uyum sağlar
Web kodu paylaşımıFlutter web çıktısı mümkünReact web projesiyle mantık paylaşımı kolay
Uygun proje tipiMarka tasarımı ağır, animasyonlu uygulamalarMevcut React ekibi olan işletmeler

İki çatı da ciddi işletme uygulamalarında kullanılıyor. Seçimi çoğu zaman mevcut ekibiniz ve tasarım beklentiniz belirler. Yerel geliştirme ile çapraz platform arasındaki daha temel kararı ise native mi cross-platform mu yazımızda ele aldık.

Flutter hangi projede uygun değildir?

Her aracın kötü oturduğu yerler var. Aşağıdaki durumlarda Flutter'ı seçmeden önce iki kez düşünmenizi öneriyoruz:

  • Donanıma derin bağımlılık: Bluetooth ile özel endüstriyel cihaz yönetimi, gelişmiş kamera işleme ya da arka planda sürekli sensör okuma gibi işler yerel kodun ağırlığını artırır.
  • Platformun en yeni özelliğini ilk gün isteme: yeni widget türleri ya da sistem entegrasyonları çıktığında yerel geliştirme daha hızlı tepki verir.
  • Çok küçük paket boyutu şartı: hafif bir yardımcı uygulama ya da anlık uygulama deneyimi hedefliyorsanız motorun getirdiği ek boyut sorun olabilir.
  • Arama motorunda bulunması gereken içerik: Flutter web, tanıtım sitesi ya da blog için uygun değildir; bu iş klasik web teknolojileriyle yapılmalı.
  • Ekibin tamamı başka teknolojide uzman: elinizde güçlü bir Swift ya da React ekibi varsa, Dart'a geçiş maliyeti avantajları silebilir.

Bu liste kesin bir yasak listesi değil. Örneğin donanım ağırlıklı bir projede yalnız sensör kısmını yerel kodla yazıp geri kalanını Flutter ile kurmak da mümkün. Önemli olan riski baştan görmek.

Flutter nedir, ne değildir: web sitesini uygulamaya sarmak yeter mi?

Flutter nedir sorusunu araştıran işletmelerin bir kısmı aslında başka bir şey arıyor: mevcut web sitesini hızlıca "uygulama" yapıp mağazaya koymak. Oysa Flutter bu iş için tasarlanmış bir araç değil; üstelik mağazalar da bu yaklaşımı sıkı denetliyor.

Apple'ın App Store İnceleme Yönergeleri 4.2 maddesinde uygulamanın yeniden paketlenmiş bir web sitesinin ötesine geçen özellik, içerik ve arayüz sunması gerektiğini söylüyor. Aynı bölümdeki 4.2.2 maddesi, katalog dışındaki uygulamaların ağırlıklı olarak pazarlama materyali, reklam ya da bağlantı derlemesi olmaması gerektiğini belirtiyor.

Dolayısıyla Flutter ile yazsanız bile uygulamanın gerçek bir işlevi olmalı: randevu alma, sipariş takibi, sadakat kartı, bildirimle hatırlatma gibi. Aynı uygulamayı her şube için ayrı kopyalarsanız başka bir sorunla karşılaşırsınız; bunu App Store 4.3 spam reddi yazımızda anlattık.

Mağaza kuralları Flutter uygulamasını nasıl etkiler?

Mağazalar uygulamanızı hangi çatıyla yazdığınıza bakmaz; ortaya çıkan uygulamanın kurallara uyup uymadığına bakar. Yine de Flutter projelerinde özellikle dikkat ettiğimiz birkaç nokta var.

Birincisi, Apple yönergelerinin 2.5.2 maddesi uygulamanın paketinde kendi kendine yeterli olmasını, uygulamanın işlevini değiştiren kodu sonradan indirip çalıştırmamasını istiyor. Bu yüzden "mağazayı atlayıp uzaktan kod güncelleme" vaat eden çözümlere temkinli yaklaşıyoruz. İkincisi, Google Play yeni uygulamaların ve güncellemelerin güncel bir Android API seviyesini hedeflemesini şart koşuyor.

Flutter sürümünü ve eklentileri düzenli güncellemezseniz bu hedef seviye şartını karşılamak zorlaşır. Kuralın nasıl işlediğini Google Play hedef API seviyesi şartı yazımızda, güncel eşikleri ise Play Console Yardım sayfasında bulabilirsiniz. Eşik değerleri değiştiği için rakamı her zaman resmi kaynaktan kontrol edin.

Yayın öncesi test aşaması da çatıdan bağımsız. iOS tarafında beta testin nasıl işlediğini TestFlight nedir rehberimizde, Android tarafındaki kapalı test şartını ise Google Play kapalı test yazımızda ayrıntılı bulabilirsiniz.

Mevcut uygulamaya Flutter eklenebilir mi?

Evet, eklenebilir. Flutter'ın resmi belgesi bu yönteme "add-to-app" diyor: Flutter'ı mevcut uygulamanıza modül olarak, parça parça entegre edersiniz. Böylece uygulamanın bir kısmını Flutter çizer, geri kalanını mevcut teknolojiniz çizmeye devam eder.

Örnek senaryo: elinizde yıllardır çalışan yerel bir Android ve iOS uygulaması var. Yeni bir sadakat programı ekranı istiyorsunuz ve bu ekranın iki platformda aynı görünmesini önemsiyorsunuz. Bu durumda tüm uygulamayı yeniden yazmak yerine yalnız sadakat bölümünü Flutter modülü olarak ekleyebilirsiniz.

Belgede bazı sınırlamalar da var. Mobilde aynı uygulamaya birden fazla Flutter kütüphanesi paketlemeyi desteklemiyor. Android tarafında modül yalnız AndroidX tabanlı uygulamalarla çalışıyor. Ayrıca bazı eklentiler bu karma yapıda beklenmedik davranabiliyor. Yani add-to-app güçlü bir geçiş yolu; ama mimari incelemeden sonra karar verilmesi gereken bir yol.

Uygulama boyutu ve performans konusunda neye dikkat etmelisiniz?

Flutter'ın resmi uygulama boyutu belgesi, Flutter paketinin uygulamayı çalıştırmak için gereken tüm kodu ve varlıkları içinde taşıdığını hatırlatıyor. Belge ayrıca hata ayıklama sürümünün boyutunun hot reload altyapısı nedeniyle büyük olduğunu, son kullanıcının indirdiği boyutu temsil etmediğini vurguluyor.

Bu yüzden boyut tartışmasını doğru ölçümle yapın. Android tarafında Play Console içindeki uygulama boyutu raporuna, iOS tarafında App Store Connect'in verdiği tahmini boyutlara bakın. Mağazalar yüklediğiniz paketi cihaza göre böldüğü için kullanıcının indirdiği boyut, bilgisayarınızda gördüğünüz dosyadan farklıdır.

Performans tarafında ise sorunların çoğu çatıdan değil, uygulama tasarımından gelir. Gereksiz büyük görseller, her ekranda tekrar eden ağ istekleri ve kontrolsüz animasyonlar Flutter'da da yerel kodda da akıcılığı bozar. Öte yandan Flutter'ın kendi profil araçları darboğazı bulmayı kolaylaştırır.

Flutter web ve masaüstü çıktısı işletmeye ne kazandırır?

Flutter'ın resmi belgesine göre çatı Android, iOS, Windows, macOS ve Linux için platform katmanları içeriyor; web tarafında ise tarayıcıda JavaScript ya da WebAssembly olarak çalışıyor. Bu, aynı kod tabanından birden fazla ekrana ulaşma fırsatı demek.

İşletme açısından en mantıklı kullanım genellikle iç araçlardır. Örneğin sahadaki personelin kullandığı mobil uygulamanın bir benzerini, ofisteki ekip için masaüstü ya da tarayıcı sürümü olarak sunabilirsiniz. Böylece iki ayrı arayüz yazmadan aynı iş akışını iki ortamda kullanırsınız.

Öte yandan müşteriye açık tanıtım sitesi, blog ya da ürün katalogu için Flutter web genellikle doğru seçim değil. Bu sayfaların arama motorunda bulunması, hızlı açılması ve paylaşıldığında düzgün önizleme vermesi gerekir. Bu işler için klasik web teknolojileri daha uygundur. Kısacası Flutter web, giriş yapılan uygulama ekranları için güçlü; herkese açık içerik sayfaları için zayıf bir seçenek.

Ekip ve bakım boyutu: Flutter projesini kim sürdürecek?

Flutter nedir sorusunun bakım tarafındaki cevabı da önemli. Uygulama mağazaya çıktığı gün iş bitmez; asıl maliyet bakımda başlar. Flutter projesinde bakım üç katmanda ilerler: Flutter ve Dart sürüm güncellemeleri, eklenti güncellemeleri ve mağaza kural değişiklikleri.

Örneğin Google Play hedef API seviyesini yükselttiğinde, Flutter sürümünü ve Android yapılandırmasını güncellemeniz gerekir. Apple yeni bir gizlilik ya da hesap silme şartı getirdiğinde, ilgili ekranı her iki platform için tek seferde düzenlersiniz. Bu ikinci nokta Flutter'ın bakım avantajıdır.

Ekip planlamasında şu soruları baştan sorun:

  1. Kod deposu (repository) kimin hesabında duracak ve erişim kimde olacak?
  2. Apple Developer ve Google Play Console hesapları işletmenizin adına mı açılacak?
  3. Eklenti güncellemelerini hangi sıklıkla kontrol edeceksiniz?
  4. Geliştirici değişirse belgelendirme yeni ekibe yetecek mi?

Biz mağaza hesaplarını ve kod deposunu her zaman müşterinin adına kurmayı öneriyoruz. Böylece ekip değişse bile uygulamanın sahibi siz kalırsınız.

Flutter nedir sorusundan sonra maliyeti hangi kalemler belirler?

Flutter nedir sorusunu cevapladıktan sonra çoğu işletme hemen bütçeyi soruyor. Burada rakam vermiyoruz; çünkü maliyeti çatı değil, kapsam belirler. Yine de hangi kalemlerin bütçeyi büyüttüğünü bilmek, teklifleri karşılaştırmanızı kolaylaştırır.

  • Ekran ve akış sayısı: giriş, profil, ödeme, sipariş takibi gibi her akış tasarım ve test emeği demektir.
  • Arka uç ihtiyacı: kullanıcı hesapları, yönetim paneli ve veri tabanı çoğu zaman uygulamanın kendisi kadar iş çıkarır.
  • Entegrasyonlar: ödeme sağlayıcısı, harita, bildirim servisi ve muhasebe bağlantıları.
  • Yerel kod payı: hazır eklentisi olmayan her özellik ek geliştirme ister.
  • Bakım dönemi: sürüm ve mağaza kuralı güncellemeleri için ayrılan düzenli emek.

Tek kod tabanı, iki ayrı yerel uygulamaya göre geliştirme emeğini genellikle azaltır. Ancak bu tasarruf, arka uç ve entegrasyon işlerine yansımaz; onlar hangi çatıyı seçerseniz seçin aynı kalır. Bu yüzden teklif karşılaştırırken yalnız "uygulama" kalemine değil, sunucu ve bakım kalemlerine de bakın.

Flutter uygulamasında gizlilik ve veri güvenliği nasıl ele alınır?

Mağazalar, uygulamanın hangi veriyi topladığını açıkça beyan etmenizi istiyor. Flutter projelerinde bu beyanın en kritik kısmı eklentiler. Çünkü kullandığınız analiz, reklam ya da harita eklentisi de veri toplayabilir ve bu veri sizin beyanınıza girer.

Bu nedenle projeye her eklenti eklediğimizde, eklentinin hangi veriyi topladığını ve hangi izinleri istediğini listeye yazıyoruz. Böylece Apple'ın gizlilik etiketlerini ve Google Play'in veri güvenliği formunu doldururken tahmin yürütmek zorunda kalmıyoruz.

Formların nasıl doldurulduğunu adım adım anlatan Google Play veri güvenliği formu rehberimize bakabilirsiniz. Ayrıca kullanıcı verisini cihazda saklıyorsanız şifreli depolama kullanın, sunucu iletişimini her zaman şifreli bağlantı üzerinden kurun ve API anahtarlarını uygulama paketine gömmeyin. Kısacası Flutter bu konuda size ek bir risk getirmez; ama eklenti zinciri yüzünden ek bir denetim adımı ister.

Flutter uygulamasında erişilebilirliği nasıl test edersiniz?

Erişilebilirlik, görme, işitme ya da hareket kısıtı olan kullanıcıların uygulamanızı rahatça kullanabilmesi demektir. Flutter arayüzü kendisi çizdiği için ekran okuyuculara anlamı ayrıca aktarır; bu yüzden test etmeden "olur" diye varsaymayın.

Biz her Flutter projesinde şu kontrolleri yapıyoruz:

  • iPhone'da VoiceOver, Android'de TalkBack açıkken tüm ana akışları baştan sona dener, düğme adlarının anlamlı okunduğunu kontrol ederiz.
  • Sistem yazı boyutunu en büyük seviyeye çekip metinlerin taşmadığını, düğmelerin kesilmediğini kontrol ederiz.
  • Renk kontrastını ve dokunma alanlarının yeterince büyük olduğunu gözden geçiririz.
  • Simge tek başına anlam taşıyorsa ona açıklayıcı bir etiket ekleriz.

Bu kontroller yalnız yasal ya da etik bir gereklilik değil. Üstelik daha geniş bir kitleye ulaşmanızı ve mağaza yorumlarında olumsuz geri bildirimi azaltmanızı da sağlar. Flutter nedir sorusuna verilecek iyi bir cevap, çatının bu tür ayrıntıları ne kadar iyi desteklediğini de içermeli; doğru kurulduğunda destek güçlüdür.

Flutter seçmeden önce hangi soruları sormalısınız?

Aşağıdaki kontrol listesini teklif toplantısına götürün. Cevapların çoğu "evet" ise Flutter güçlü bir aday; "hayır" cevapları artıyorsa alternatifleri de masaya koyun.

  1. Uygulamanın iOS ve Android'de aynı anda yayına çıkması gerekiyor mu?
  2. Marka tasarımının iki platformda birebir aynı görünmesi önemli mi?
  3. Uygulamanın ana işlevi ekran, form, liste ve sunucu iletişimi mi?
  4. Donanıma derin erişim (özel Bluetooth cihazı, sürekli arka plan işleme) ikincil mi?
  5. Bakımı tek ekiple sürdürmek istiyor musunuz?
  6. Kullanacağınız ödeme, harita ve bildirim servislerinin Flutter eklentisi aktif olarak güncelleniyor mu?
  7. Paket boyutu sizin için kritik bir sınır değil mi?
  8. Uzun vadede Dart bilen bir ekiple çalışmayı göze alıyor musunuz?

Bu liste bir puanlama aracı değil, konuşmayı yapılandırmanın bir yolu. Örneğin altıncı sorunun cevabı tek başına kararı değiştirebilir; kritik bir ödeme sağlayıcısının eklentisi yoksa, o kısmı yerel kodla yazmanın maliyetini hesaba katarsınız.

Örnek senaryo: randevu uygulaması için Flutter kararı nasıl verilir?

Bu bölüm gerçek bir müşteri vakası değil, karar mantığını göstermek için kurguladığımız bir örnek senaryo. İstanbul'da üç şubesi olan bir güzellik salonu düşünün. Müşterilerin randevu almasını, hatırlatma bildirimi almasını ve puan biriktirmesini istiyor.

Kontrol listesine baktığımızda tablo net: iki platform aynı anda gerekiyor, marka renkleri ve animasyonlu kampanya ekranları önemli, donanım ihtiyacı yok. Bildirim ve takvim entegrasyonu için olgun eklentiler mevcut. Dolayısıyla Flutter bu senaryoda güçlü bir aday.

Ancak dikkat edilmesi gereken bir nokta var: üç şube için üç ayrı uygulama açmak yerine tek uygulamada şube seçimi sunmak gerekir. Aksi halde mağaza incelemesinde spam kuralına takılma riski doğar. Ayrıca randevu verisi sunucuda tutulacağı için arka uç (backend) tasarımı, Flutter kararından en az onun kadar önemli.

Aynı senaryoda salon, kapıdaki özel bir giriş cihazıyla Bluetooth üzerinden konuşmak isteseydi değerlendirme değişirdi. Bu durumda o modül için yerel kod payını hesaba katardık.

Flutter projesinde süreç adım adım nasıl ilerler?

Bizim çalıştığımız projelerde süreç kabaca şu sırayı izliyor. Her projede adımların süresi kapsama göre değişir.

  1. Keşif ve kapsam: uygulamanın ana işlevlerini, kullanıcı tiplerini ve entegrasyonları yazıya dökeriz.
  2. Teknoloji kararı: kontrol listesine göre Flutter, React Native ya da yerel geliştirme arasında gerekçeli seçim yaparız.
  3. Tasarım: ekran akışlarını ve marka bileşenlerini hazırlarız; Flutter'da bu bileşenler doğrudan koda dönüşür.
  4. Geliştirme: tek kod tabanında ekranları, sunucu bağlantısını ve platforma özel ayarları kurarız.
  5. Test: TestFlight ve Google Play kapalı test kanallarıyla gerçek cihazlarda deneriz.
  6. Mağaza başvurusu: gizlilik beyanlarını, ekran görüntülerini ve inceleme notlarını hazırlayıp başvururuz.
  7. Bakım: sürüm, eklenti ve mağaza kuralı güncellemelerini düzenli takip ederiz.

Bu sürecin tamamını tek elden yürütmek isterseniz, uygulamanızı biz geliştirir ve mağazaya biz çıkarırız. Kapsamınızı paylaşarak mobil uygulama geliştirme hizmetimiz üzerinden teklif alabilirsiniz.

Flutter işletmeniz için doğru seçim mi?

Özetle Flutter; iki platforma aynı anda çıkmak, tutarlı bir marka görünümü sunmak ve bakımı tek ekiple sürdürmek isteyen işletmeler için güçlü bir seçenek. Randevu, sipariş, sadakat, içerik ve müşteri hizmeti uygulamaları bu profile genellikle iyi oturur.

Buna karşılık donanıma derin bağlı projelerde, çok küçük paket boyutu şartında ya da ekibinizin başka bir teknolojide derin uzmanlığı varsa alternatifleri ciddiye alın. Hangi yolu seçerseniz seçin, mağaza kurallarını, test sürecini ve bakım planını projenin başında yazıya dökün.

Projeniz için hangi teknolojinin uygun olduğundan emin değilseniz, kapsamınızı birlikte değerlendirelim. Teknoloji kararından mağaza onayına kadar tüm adımlar için mobil uygulama teklifi alın; size gerekçeli bir öneri ve yol haritası sunalım.

Sıkça Sorulan Sorular

Flutter ücretsiz mi?
Evet, Flutter açık kaynaklı ve ücretsiz bir çatıdır; lisans bedeli ödemezsiniz. Ancak uygulamayı mağazaya çıkarmak için Apple Developer Program üyeliği ve Google Play geliştirici hesabı gerekir. Bu hesapların güncel ücretlerini Apple ve Google'ın resmi sayfalarından kontrol edin. Geliştirme, tasarım ve bakım emeği de ayrı bir maliyet kalemi olarak bütçede yer almalı.
Flutter ile yazılan uygulama App Store'dan reddedilir mi?
Hayır, çatının kendisi ret sebebi değildir. Apple uygulamanın hangi araçla yazıldığına değil, İnceleme Yönergeleri'ne uyup uymadığına bakar. Ret riskini artıran şeyler yetersiz işlev, yeniden paketlenmiş web sitesi görünümü, aynı uygulamanın kopyaları ve eksik gizlilik beyanlarıdır. Bu noktaları başvurudan önce kontrol ederseniz Flutter uygulaması da yerel uygulama gibi incelemeden geçer.
Flutter mı React Native mi daha iyi?
Kesin bir kazanan yok; seçim projenize ve ekibinize bağlı. Flutter, iki platformda birebir aynı marka görünümü ve animasyonlu arayüzlerde öne çıkar. React Native ise elinde JavaScript veya React ekibi olan işletmeler için daha kolay uyum sağlar. Karar verirken eklenti ihtiyaçlarınızı, bakım ekibinizi ve tasarım beklentinizi birlikte değerlendirin.
Flutter uygulaması yavaş çalışır mı?
Genellikle hayır. Flutter yayın sürümünde kodu doğrudan makine koduna dönüştürür ve arayüzü kendi motoruyla çizer; bu yapı akıcı çalışmaya uygundur. Yavaşlık şikâyetlerinin çoğu çatıdan değil, büyük görsellerden, gereksiz ağ isteklerinden ve kontrolsüz animasyonlardan gelir. Hata ayıklama sürümü yayın sürümünden yavaş ve büyük olduğu için ölçümü yayın sürümüyle yapın.
Mevcut web sitemi Flutter ile uygulamaya çevirebilir miyim?
Teknik olarak mümkün, ama siteyi uygulama kabuğuna sarmak tek başına yetmez. Apple yönergeleri uygulamanın yeniden paketlenmiş bir web sitesinin ötesinde özellik ve arayüz sunmasını istiyor. Randevu, bildirim, sipariş takibi ya da sadakat kartı gibi gerçek işlevler eklerseniz Flutter bu iş için iyi bir araçtır. Önce uygulamanın kullanıcıya ne kazandıracağını tanımlayın.
Flutter projesinin bakımı ne kadar iş çıkarır?
Bakım üç başlıkta ilerler: Flutter ve Dart sürüm güncellemeleri, eklenti güncellemeleri ve mağaza kural değişiklikleri. Tek kod tabanı sayesinde bir değişikliği iki platform için bir kez yaparsınız; bu bakım yükünü azaltır. Yine de Google Play hedef API seviyesi gibi şartlar düzenli güncelleme gerektirir. Bakımı aksatırsanız uygulama mağazada güncelleme yayınlayamaz hale gelebilir.
  • Flutter
  • mobil uygulama
  • çapraz platform
  • Dart
  • React Native
  • uygulama geliştirme
Paylaş:
Talha Aslan

Google Partner dijital pazarlama uzmanı. 2012’den beri SEO, Google Ads, web tasarım ve e-ticaret projelerinde sahada; bu blogda gördüğünüz her yazı o deneyimden çıkar.

Sıradaki proje

Projeniz için teklif alın.

Talebiniz doğrudan Talha Aslan ve ekibine ulaşır: stratejiyi Talha kurar, uygulamayı deneyimli ekip yürütür. Aynı gün dönüş yapar, kapsamı, takvimi ve tutarı yazılı teklifle 1 iş günü içinde göndeririz.