Flutter Nedir, Hangi Platformlara Uygulama Derliyor?

Haberci

SEO UZMANI
Yönetici
Katılım
21 May 2023
Mesajlar
602
Tepki
17
Puan
18
832




Tek bir ekibin hem Android hem iOS tarafını yetiştirmesi gerektiğinde gündeme ilk gelen isimlerden biri Flutter oluyor. Adı sık geçiyor ama "aslında ne olduğu" çoğu tanıtım yazısında bulanık kalıyor: bir dil mi, bir kütüphane mi, yoksa ayrı bir çalışma ortamı mı?

Bu yazı Flutter'ın ne olduğunu, hangi platformlara çıktı ürettiğini ve arka planda nasıl çalıştığını, projenin kendi mimari belgesine ve Dart'ın resmî tanıtımına dayanarak anlatıyor.

Flutter tam olarak nedir?​


Flutter bir programlama dili değil; arayüz yazmak için kullanılan katmanlı bir çatı. Flutter'ın mimari genel bakış belgesi sistemi birbirinden bağımsız kütüphanelerden oluşan katmanlar hâlinde tarif ediyor: en üstte Dart ile yazılmış çatı (Material, Cupertino, widget kütüphaneleri), altında C++ ile yazılmış motor, en altta da her işletim sistemine özel gömücü (embedder) katmanı yer alıyor.

Yazdığınız kod Dart dilinde çalışıyor. Dart'ın resmî tanıtımına göre Dart, her platformda hızlı uygulama geliştirmek için istemci tarafına göre optimize edilmiş bir dil; yerleşik ve katı bir null güvenliği var, yani bir değer siz izin vermedikçe null olamıyor.

Hangi platformlara çıktı üretiyor?​


Mimari belgenin ifadesiyle, yayın sürümünde Flutter uygulamaları doğrudan makine koduna derleniyor: Intel x64 ya da ARM komut setine, web hedefleniyorsa JavaScript'e. Web tarafında `--wasm` seçeneğiyle derlendiğinde çıktı WebAssembly olabiliyor.

Belgelerde kurulum başlıkları Android, iOS, web, Windows, macOS ve Linux için ayrı ayrı veriliyor; ChromeOS ise Android hedefi üzerinden destekleniyor. Yani "tek kod tabanı" ifadesi burada masaüstünü de kapsıyor.

Widget mantığı: küçük parçaların bileşimi​


Flutter'da ekrandaki hemen her şey bir widget. Mimari belge bunun bilinçli bir tasarım tercihi olduğunu söylüyor: sınıf hiyerarşisi kasıtlı olarak sığ ve geniş tutulmuş, amaç her biri tek bir işi iyi yapan, birleştirilebilir küçük widget'ların olabildiğince çok kombinasyonuna izin vermek.

Pratikte bunun anlamı şu: bir metni ortalamak için o metnin bir özelliğini aramazsınız, onu ortalayan widget'ın içine koyarsınız. Arayüz, durumun bir fonksiyonu olarak yeniden üretiliyor; çatı hangi kısmın değiştiğini kendisi bulup yalnız orayı yeniden çiziyor.

  • Yerleşim kuralı: Kısıtlar yukarıdan aşağı iner, boyutlar aşağıdan yukarı döner. Belge bu kutu modelinin yerleşimi O(n) sürede çözdüğünü belirtiyor.
  • Öğe ağacı: Her widget'ın ağaçtaki belirli bir konuma karşılık gelen bir öğe (element) karşılığı vardır.
  • Çizim: Flutter sistemin arayüz kütüphanelerini kullanmak yerine kendi widget setini çiziyor; görselleri boyayan Dart kodu yerel koda derleniyor ve çizim için Impeller kullanılıyor.

Geliştirirken hot reload ne sağlıyor?​


Geliştirme sırasında uygulama, tam yeniden derleme gerektirmeden durumu koruyan hot reload sunan bir sanal makinede çalışıyor. Bunun günlük karşılığı, bir renk ya da yerleşim değişikliğini görmek için uygulamayı baştan açıp aynı ekrana kadar tıklamak zorunda kalmamanız.

Aynı ikilik yayın tarafında ortadan kalkıyor: geliştirmede JIT, yayında AOT derleme devreye giriyor. Dart'ın belgeleri de bu ayrımı aynı şekilde tarif ediyor.

Yerel tarafla nerede buluşuyor?​


Kamera, konum, ödeme gibi işletim sistemine ait yetenekler için Flutter platform kanalları kullanıyor; Dart tarafındaki bir çağrı, Android'de Kotlin, iOS'ta Swift tarafındaki karşılığına iletiliyor. C tabanlı kütüphaneler için ayrıca doğrudan bir yabancı fonksiyon arayüzü (FFI) mevcut.

Bu köprü kurulduğu anda uygulamanız artık yalnız Dart dünyasında değil. İzin diyalogları, arka plan kısıtları ve mağaza kuralları devreye giriyor. İzin reddedildiğinde uygulamanın nasıl davranması gerektiğini kamera ve konum izinlerini ele aldığımız yazıda ayrıntılı işlemiştik. Yerel katmandan gelen bir çökme söz konusuysa ilk bakılacak yer çökme kaydıdır; bu kaydın nasıl okunacağını Android uygulama çökmelerine ayırdığımız yazıda anlatmıştık.

Sık karıştırılan nokta' Alıntı:
Flutter bir dil değil; dil Dart. "Flutter öğrenmek" pratikte önce Dart'ın temellerini öğrenmek demek.

Başlamadan önce ne bilmek gerekiyor?​


Flutter'a girmeden önce mobil geliştirmenin genel çerçevesini oturtmak işi kolaylaştırıyor; sürecin bütününe mobil uygulama geliştirmeyi tanıttığımız yazıdan bakabilirsiniz. Ardından sırasıyla Dart temelleri, widget kataloğu ve yerleşim kısıtları geliyor.

Sürüm notlarını takip etmek de işin parçası: örneğin 3.29 sürümüyle birlikte iOS ve Android'de arayüz ve platform iş parçacıkları birleştirildi, Dart kodu doğrudan yerel platform iş parçacığında çalışmaya başladı.

Sık Sorulan Sorular​


Flutter bir programlama dili mi?
Hayır. Flutter arayüz geliştirme çatısı, kullanılan dil ise Dart. Dart'ın resmî tanımı onu her platformda hızlı uygulama geliştirmeye yönelik, istemci tarafına optimize edilmiş bir dil olarak tarif ediyor.

Flutter hangi platformlarda çalışıyor?
Belgelerde Android, iOS, web, Windows, macOS ve Linux için ayrı kurulum yolları veriliyor; ChromeOS ise Android hedefi üzerinden destekleniyor.

Flutter uygulamaları yavaş mı çalışır?
Yayın derlemesinde kod doğrudan makine koduna (x64 veya ARM) çevriliyor, web hedefinde JavaScript ya da WebAssembly üretiliyor; arayüz de sistem widget'ları yerine Impeller ile çiziliyor.

Hot reload tam olarak ne yapıyor?
Geliştirme sırasında uygulama, tam yeniden derleme olmadan değişiklikleri yükleyebilen ve mevcut durumu koruyan bir sanal makinede çalışıyor.

Flutter ile kameraya, konuma erişebilir miyim?
Evet, platform kanalları üzerinden. Dart tarafındaki çağrı Android'de Kotlin, iOS'ta Swift tarafına iletiliyor; C kütüphaneleri için FFI da kullanılabiliyor.

Özetle​


Flutter, Dart ile yazdığınız arayüzü katmanlı bir mimari üzerinden yerel makine koduna derleyen bir geliştirme çatısı. Gücü, her biri tek iş yapan küçük widget'ların bileşiminden ve geliştirme ile yayın için iki ayrı derleme modelinden geliyor. Karar verirken bakılacak asıl soru, hedef platform listeniz ile ekibinizin Dart'a ayıracağı süre.

Sizin projenizde tek kod tabanı gerçekten gerekli mi, yoksa tek platformla mı başlıyorsunuz?

Güncelleme: 26 Ağustos 2026.



Dijital Dünyanıza Yön Veren Pusula
 

Ekli dosyalar

  • banner_08.jpg
    banner_08.jpg
    5.3 KB · Görüntüleme: 1
Geri
Üst