Flutter Nasıl Çalışır? Çalışma Mimarisi Nasıldır?

Flutter, daha hızlı ve kolay bir şekilde cross-platform mobil uygulamalar geliştirmek için Google tarafından desteklenen bir yazılım geliştirme kitidir. Flutter ile geliştirilen uygulamalar native geliştirilen uygulamalardan farksızdır. Kullanıcılar için iOS’da Swift, Android’de Java veya Kotlin ile geliştirilen uygulamalar ile aynı deneyimi sunmaktadır.

Flutter ile mobil uygulama geliştirmek için Dart programlama dilini kullanmamız gerekir. Dart Google tarafından geliştirilmiştir. Nesne yönelimli bir programlama dilidir. Genel özelliklerini şöyle sıralayabiliriz:

  • Ahead Of Time ( AOT) Derleme Desteği: High level programlama diliyle yazılmış projenin çalıştırılabilir makine kodu düzeyine build edilirken getirilmesidir. Runtime’da build olmayacağı için uygulamanın performasını yükseltir.
  • Just In Time (JIT) Derleme Desteği: Kodun runtime’da derlenmesini sağlar. Hot Reload özelliği sayesinde, development esnasında yaptığımız değişiklikleri hemen görebiliriz.
  • x86 ve ve ARM Koduna Derlenebilmesi: Uygulamamızın native bir app’ten farkı olmamasıdır. Ayrıca web desteğiyle birlikte kodumuzu JavaScript’e de derleyebiliriz.

Çalışma Prensibi

Flutter, bütün widget’ları kendi yüksek performanslı engine’i ile render eder. Bu sayede yazacağınız cross-platform uygulamanın performansı, native bir uygulamadan farksız olur. Engine’in C/C++ kodu Android’de NDK ile, iOS’da LLVM ile derlenir. Bütün Dart kodları AOT ile native koda derlenmiş olur.

Bütün Flutter uygulamaları widget’lardan oluşur. Hepsi Skia canvas üzerine render olur ve ilgili platform ile bunun üzerinden iletişim sağlanır.


Platform Katmanı

Flutter platforma özgü shell kullanır. Dart VM bu shell’in içerisinde bulunur ve uygulamanızın native APIlerle iletişimini sağlar. Ayrıca shell ilgili IMElerle(Klavye vs.) ve uygulama lifecycle eventleri arası iletişimi sağlar.


Engine Katmanı

Engine’in C ve C ++ kodu Android’in NDK veya iOS’unun LLVM’siyle derlenir. Dart kodu (hem SDK hem de Uygulama kodu) AOT derlenerek native ARM library’isine çevrilir. Bu library “runner” olarak Android veya iOS projesi içerisine dahil edilir ve .ipa veya ..apk uzantılı olarak oluşturulur. Uygulama run edilince, uygulama ilk önce Flutter Library’si load eder. Herhangi bir rendering, input veya event handle etme görevleri derlenmiş Flutter ve uygulama koduna devredilir.


Framework Katmanı

Geliştirme yapmak için kullanacağız her şeye Flutter framework katmanında ulaşırız. Bu katman doğru theme’leri kullanarak native bir iOS veya Android uygulama gibi gözükmesini sağlar. Bunlardan Cupertino iOS için, Material ise Android içindir.


Flutter kullanıcı arayüzünü GPU kullanarak genellikle 60fps’de güncel tutmaya çalışır.


Dart’da yazılan widget’lar, doğrudan Native SDK’ya bağlı native widget’lar için derlenir. React Native’deki bridge üzerinden yani herhangi bir orta katman kullanmamıza gerek kalmaz. Flutter, widgetları native platformda çalışan motoru içinde, doğrudan Skia canvası üzerinde oluşturur.


Sonuç

Flutter tek codebase ile hem Android hem iOS uygulama geliştirmeyi kolaylaştırmıştır. Deneyimli bir native veya cross-platfrom mobile uygulama geliştiricisi olsanız bile, benim gibi daha önceki deneyimleriniz bir kenara bırakıp, odağınızı tamamen Flutter’a verebilirsiniz.

2 Comments

Leave a Comment