Hibrit Güç: Flutter Avantajları ve Faydaları
Yayınlanan: 2022-03-11Flutter, Google'ın 2018'in sonlarında 1.0'a ulaşan bir hibrit mobil uygulama geliştirme platformudur. Hibrit geliştirme çerçeveleri listesine daha yeni girmiş olsa da, arkasındaki harika fikirler, geliştiriciler arasında hızla yakalanmasına neden oldu.
Bu makaledeki amacım, bu fikirleri keşfetmek ve Flutter ile olan deneyimlerimi ve bunun neden hibrit mobil uygulama geliştirmenin geleceği olduğunu düşündüğümü yazmaktır.
Piyasada daha eski hibrit uygulama çerçeveleri olsa da, mobil uygulamaları için Flutter'ı seçen büyük isim şirketlerinin sayısı giderek artıyor. Flutter vitrin sayfası bunlardan birçoğunu listelese de, Flutter'ı tüm uygulama için veya önemli bir özellik için kullanan birkaç dikkate değer uygulama:
- Google Ads uygulaması
- GrabFood'un GrabMerchant uygulaması
- 50 milyondan fazla indirilen Alibaba Group'un Xianyu uygulaması
- Nubank
- eBay Motors uygulaması
Flutter çerçevesi oldukça yetenekli olsa da, hala nispeten yenidir. Denge adına, Flutter'a katılmadan önce bilmeniz gereken bazı sınırlamalardan da bahsedeceğim.
Umarım bu makaleyi okuduktan sonra Flutter'ın artıları ve eksileri hakkında iyi bir fikriniz olur ve bir sonraki mobil uygulama projenizde Flutter'ı kullanıp kullanmamaya karar vermek için yeterli bilgiye sahip olursunuz.
Flutter Avantajları (Geliştirme Perspektifinden)
Bir geliştirici olarak benim en aşina olduğum ve hakkında en fazla bilgiyi paylaşabileceğim bakış açısı bu.
Hızlı Öğrenme Eğrisi
Flutter'ın geliştiriciler için sahip olduğu ilk hoş sürpriz, başlamanın ne kadar hızlı olduğudur. Kurulum sürecini tamamlamak ve çalışan bir geliştirme ortamının kurulması 30 dakikadan az sürer. Oradan, ilk Flutter uygulamanızı oluşturmaya hazırsınız.
Popüler Editör Entegrasyonu
Flutter ayrıca harika editör entegrasyonlarına sahiptir. Ben şahsen Android Studio kullanıyorum, ancak IntelliJ, VSCode veya Emacs'ı kurmak için kullanılabilecek talimatlar var.
Temiz Geliştirme Süreci
Hibrit uygulama çerçeveleriyle ilgili önceki deneyimime kıyasla, geliştirme süreci de daha temiz hissettiriyor. Örneğin, birçok öğe içeren listeleri (yaklaşık 100 ya da öylesine) görüntülemek için WebView'ları kullandığımda, özellikle kullanıcı listeyi kaydırırken yüksek CPU kullanımıyla uğraşmak zorunda kaldım. Bunları özellikle bunun için yapılmış İyonik çerçeve öğelerini kullanarak çözdüm. Flutter'da listeleri görüntülemenin kabul edilen bir yolu vardır, listeden çıktığı gibi inanılmaz bir performansa sahip olan ListView
.
Canlı Yeniden Yükleme
Beni hoş bir şekilde şaşırtan başka bir şey de canlı yeniden yükleme işleviydi. Tam kapsamlı bir geliştirici olarak, tarayıcıda canlı yeniden yükleme sağlayan BrowserWatch gibi çerçevelere alışkındım.
Yerel geliştirme buna sahip değil (ancak Apple'dan SwiftUI'nin iOS geliştirme için bu cephede biraz ilerleme kaydettiğini düşünüyorum). Android ve iOS geliştiricilerinin genellikle kod yazması ve ardından değişiklikleri görmeden önce derlenip cihaza veya simülatöre yüklenmesini beklemesi gerekir.
Flutter, geliştiricilerin "kaydet" düğmesine basar basmaz uygulama kodunun cihaza yeniden yüklendiği canlı bir yeniden yükleme mekanizması sağlar (bir la React Native). Bu, anında geri bildirim vererek geliştirmeyi çok daha hızlı hale getirir.
Verim
Uygulama performansı, Flutter'ın yavaş yavaş kazanan olarak ortaya çıktığı başka bir ölçümdür.
Flutter çerçevesi aktif olarak geliştirilme aşamasında olduğu için performans optimizasyonlarının yapılabileceği birçok yer bulunmaktadır. Bu, örneğin, daha yeni iOS cihazlarda oluşturma performansını %50'ye kadar artıran ve belirli iş yükü türleri için bellek tüketimini %70'e kadar azaltan Flutter 1.17'de açıkça görülmektedir.
Platformlar Arası Tutarlılık
Her iki mobil platformda da gerçekten tutarlı kullanıcı arayüzleri, Flutter'ın bir başka dikkat çekici özelliğidir. Flutter kendi işleme motorunu kullandığından (daha sonra bahsedeceğiz) UI, iOS ve Android'de tamamen aynıdır. Geliştiricilerin artık her şeyin tam olarak tasarıma benzemesini sağlamak için platforma özgü stil sorunlarıyla boğuşması gerekmiyor: Bu garanti, çerçevenin bir parçasıdır.
Dil, Araçlar ve Uzantı
Burada belirtilmesi gerektiğini düşündüğüm daha küçük ama yine de önemli olan üç husus daha:
- Flutter uygulamalarının programlandığı dil olan Dart'ı kullanmaya başlamak çok basittir. Ancak aynı zamanda, Google tarafından JavaScript'in yerini alması amaçlanan oldukça güçlü bir dildir. Geliştiricilerin JavaScript veya diğer C benzeri dillerle ilgili deneyimleri varsa, Dart'ı bir veya iki gün içinde almakta sorun yaşamazlar.
- Varsayılan araç zincirine dahil edilmiş sağlam bir eklenti yöneticisi (pub) ve pub.dev eklenti deposu aracılığıyla kullanılabilen devasa bir eklenti kitaplığı vardır.
- Yerel platform özelliklerinden yararlanmak için eklentiler oluşturmak oldukça kolaydır, bu nedenle geliştiricilerin halihazırda hiçbir eklentinin bulunmadığı bir platform özelliğine erişmesi gerekiyorsa, bir tanesini kodlamak çok zor değildir.
Flutter Avantajları (İş Perspektifinden)
Çoğu işletmenin düşündüğü en büyük Flutter avantajı, hem iOS hem de Android platformları için yalnızca bir ekip kiralamak zorunda olmaktır. Ancak, birçok işletmenin gözden kaçırdığı daha önemli bir fayda, pazara daha hızlı çıkma zamanıdır . Önceki bölümdeki geliştirme avantajlarından yararlanan daha küçük bir geliştirme ekibi, Flutter kullanarak her iki platformda da aynı kullanıcı deneyimini sağlayan yerel performansa sahip güzel bir uygulama oluşturabilir.
Flutter, geliştiricilerin gerçekten güzel bazı kullanıcı arayüzleri oluşturmasına olanak tanır. Lenovo Akıllı Saat için güzel bir saat kadranı kullanıcı arayüzü oluşturmak için Google ve Lenovo'nun yakın tarihli bir mücadelesine bir göz atın. Kazanan, Mickel Andersson'ın Parçacık Saati , yalnızca benzersiz bir şekilde zarif olmakla kalmaz, aynı zamanda Flutter'da animasyonların ne kadar başarılı olduğunu da gösterir.
Flutter'ı düşünen ancak bunun doğru yol olup olmadığından emin olmayan işletmeler için Flutter'dan kademeli olarak yararlanılabilir: Önceden var olan mobil uygulamalar, Flutter'ı bir seferde tek bir parçayı entegre edebilir. Aslında, çoğu büyük şirketin Flutter ile mevcut uygulamalarının küçük bir bölümünü Flutter'da oluşturarak ve ardından faydaları gördükten sonra yavaş yavaş diğer parçaları değiştirerek Flutter ile başlama şekli budur.
Flutter Kullanmadan Önce Dikkate Alınması Gereken Sınırlamalar
Dürüst olmak gerekirse, Flutter, daha yeni olduğu için, React Native gibi diğer hibrit mobil uygulama çerçeveleri kadar savaşta test edilmedi - sonuçta, React Native'in son kullanıcı erişimi, Facebook, Instagram, Skype ve Discord'un mobil uygulamalarını kapsar.
Varsayılan cevap "Flutter kullanmalı mıyım?" şimdilik temkinli bir evet . Bunun nedeni, proje yöneticilerinin, eğer varsa, hangi gelişmiş özelliklere ihtiyaç duyacaklarını düşünmeleri ve Flutter'ı kullanmaya karar vermeden önce bu özelliklerin mevcut olduğundan emin olmaları gerektiğidir. Özellikle, bir ekibin belirli bir uygulamayı oluşturmak için hangi kitaplıklara ve eklentilere ihtiyaç duyabileceğini sormaya değer. Mobil uygulama çerçevelerinde daha yeni bir giriş olarak Flutter, React Native'in sahip olduğu kapsamlı kitaplık ve eklenti kapsamına sahip değildir.
Örneğin, yakınlaştırma ve flaş kontrolü henüz resmi kamera eklentisinin bir parçası olmadığı için Flutter'daki kamera desteği henüz tamamlanmadı. Oluşturduğum bir uygulamaya fotoğraf/video işlevselliğini entegre etmem gerektiğinde üçüncü taraf bir eklenti bulabildiğim için bu benim için bir anlaşma kırıcı değildi.
Kaçırabileceğiniz bir diğer önemli eklenti ise Google Haritalar. Dart'a özgü Google Haritalar eklentisi yoktur ve Google Haritalar'ı Flutter kodunuza entegre etmeye izin veren bir eklenti olsa da, Flutter'ın (platform görünümleri) halen geliştiricilerin önizleme durumunda olan özelliklerini kullanır.
Pek çok projeyi etkilemeyecek, ancak farkında olmanız gereken bir şey daha, Flutter'ın şimdilik hiçbir 3D özelliğini desteklemediğidir. Ekip şimdilik sadece 2D'ye odaklanıyor. Ancak çoğu uygulama herhangi bir 3D işlevi kullanmaz, bu nedenle geliştiricilerin çoğu için bu bir anlaşma kırıcı olmamalıdır.
Flutter ile Deneyimimden Bazı Tavsiyeler
Son iki yılda üç Flutter uygulaması çıkardıktan sonra, başlarken keşke bana söylenmiş olsaydı dediğim birkaç şey öğrendim. Flutter geliştirme yolculuğunuzda size yardımcı olmaları umuduyla bunları burada listeleyeceğim.
Flutter'a başlamak çok kolaydır. App Brewery'de harika bir kursla başladım. Ancak ilk birkaç modülü tamamladıktan sonra yeterince öğrendiğimi düşündüm ve başlattığım ilk uygulamayı oluşturmaya başladım.
Sabırsızlığımdan dolayı o derste önemli olduğu ortaya çıkan bir takım modülleri atladım ve o modüllerin derslerini hata yaparak zor yoldan öğrenmek zorunda kaldım. Özellikle, Flutter'ın en iyi birkaç uygulamasını öğrenmiş olsaydım, uygulama geliştirme için ilk Flutter kullanımımda çok daha iyi bir iş çıkarırdım:
- Flutter uygulama kodumu modülerleştirme ve yapılandırma.
- Devlet yönetimi nasıl çalışır.
- Flutter uygulamamın farklı sayfalarında kullanıcıların kimliği nasıl doğrulanır ve kimlik doğrulama durumu nasıl izlenir.
- Firebase Messaging paketi kullanılarak bildirimler nasıl entegre edilir?
Sonunda tüm bunları öğrendim ama önce bir sürü hata yapmam gerekti. Oluşturduğum ilk uygulamanın önemli kısımlarını yeniden yazdım. Ancak ikinci Flutter uygulamamla hatalarımdan ders çıkardım ve daha iyi ve daha hızlı bir iş çıkardım.
Yukarıda listelediğim kavramlar hakkında bilgi edinmek için Google'da arama yaparak kolayca bulabileceğiniz birçok kaynak var. Flutter sitesindeki Daha Fazla Bilgi sayfasındaki bağlantılara bakarak başlayabilirsiniz.
Bulduğum başka bir şey de, Flutter'ın ne kadar yeni olduğu nedeniyle, uygulamanızı yapılandırmak için tek bir model olmaması. Çoğunlukla Django tabanlı bir geliştirme kariyerinden geldiğimden, MVC'nin Django uygulamalarımda kullanılacak model olduğunu bilmeye alışığım. iOS ayrıca, takip ettiği MVVM modelinde açık bir kazanana sahiptir. Android, bir uygulamanın en iyi şekilde nasıl tasarlanacağına ilişkin bir dizi yönergeye sahiptir.
Flutter'ın birçok olasılığı "kazanan" böyle bir mimari modeli yoktur. Bu, başlangıçta bana zor anlar yaşatan bir şeydi. Sonunda, bir dizi Flutter uygulaması geliştirdikten sonra, sadece bir mimari seçip ona bağlı kalmanın en iyisi olduğunu düşünüyorum.
provider
paketini hem bağımlılık enjeksiyonu hem de değişiklik yönetimi çerçevesi olarak kişisel olarak kullanıyorum. Flutter uygulamalarım da kabaca üç satıra bölünmüştür:
- Ekranlar da dahil olmak üzere uygulamayı oluşturan widget'lar olan görünümler . Kullanıcı arabirimini mevcut verilere dayalı olarak oluşturabilmem için,
Provider
paketindekiConsumer
pencere aracını kullanarak hizmetleri ve modelleri görüşlerime enjekte ediyorum.Consumer
widget'ı ayrıca durum değiştiğinde görünümü yeniden oluşturur; bu, uygulamalarım durum değişikliklerine böyle tepki verir. - Yapılandırılmış verileri tutmak için kullandığım düz eski nesneler olan modeller .
- İş mantığının çoğunun gittiği hizmetler/kontrolörler . API arayüzleri de burada kodlanmıştır, bu da API'ye veri alıp gönderebilmektedir. Bu API arayüzleri, verileri iletmek için modeller sağlar ve kabul eder.
provider
paketine bir alternatif olarak blok kitaplığı da dikkate değer. Biraz farklı bir mimariye sahiptir ve görünümleri ve modelleri birbirine bağlamak için olay ve durum akışlarını kullanır.
Durumu yönetmenin provider
kitaplığını kullanmaktan biraz daha karmaşık bir yoludur, ancak aynı verilerde birden çok kaynaktan değişiklik yaptığınız ve bu değişikliklere birden çok yerden yanıt vermeniz gereken karmaşık bir uygulamanız varsa işe yarar.

Sonunda BLoC veya provider
kullanmıyorsanız, uygulamanız genelinde, özellikle bildirimler söz konusu olduğunda, durumu yönetmek için bir yöntem bulmanız gerekir.
Flutter'ın Diğer Hibrit Çerçevelerle Karşılaştırılması
Yerel Tepki Ver
React Native, bugüne kadarki en popüler ve başarılı hibrit mobil uygulama çerçevesidir ve bunun iyi bir nedeni vardır. Popüler ve iyi yapılmış bir ön uç web çerçevesi olan React'i aldı ve milyonlarca ön uç geliştiricinin mobil uygulamalar yazmaya başlamasına da izin verdi. Geliştiricilerin yerel iOS ve Android geliştirme SDK'larını öğrenmek için zaman ve motivasyon bulmaları gerekseydi, bugün sahip olduğumuz harika mobil uygulamaların çoğunun asla yapılmayacağından eminim.
Bu arka plana karşı, Flutter'ın eninde sonunda lider hibrit mobil uygulama çerçevesi olarak kazanacağını söylemekten eminim. Bunun birkaç nedeni var.
React Native bileşenleri JavaScript kodunda açıklanır ve yerel kontrollere çevrilir. Bu, kullanıcıların uygulamanın iOS ve Android sürümlerinde farklı bir UI hissi elde ettiği anlamına gelir. Geliştiriciler, kullanıcıları için yerel bir deneyim elde etmeye çalışıyorsa, bu harika.
Bununla birlikte, geliştiricilerin her iki mobil platformda da aynı, tutarlı kullanıcı arayüzüne sahip olmak istiyorlarsa, yerel bileşenleri aynı görünecek şekilde biçimlendirmek için çok çalışmaları veya her ikisinde de aynı görünümü ve hissi sağlayan farklı bileşenleri bir arada kullanmaları gerektiği anlamına gelir. platformlar.
Bunu, çerçevenin desteklenen tüm platformlarda kendi widget'larını sağladığı Flutter ile karşılaştırın. Flutter, kullanıcı arayüzünü boyamak için yerel kontrollere güvenmediğinden çeviri olmuyor. Bunun yerine, kendi kontrol kitaplığını kullanır. Flutter'ın widget kitaplığı, yerel kontrollere benzeyen widget'lar sağlar, ancak bunlar tamamen isteğe bağlıdır.
Bu yaklaşımın artıları ve eksileri vardır. En büyük profesyonel, artık her iki platformda da aynı uygulamaya sahip olmanızdır. Ama bunu başarmak için bazı şeylerden vazgeçiyorsun.
Flutter, yerel olanları kullanmak yerine kendi widget'larını kullandığından, React Native üzerinde minimum çalışma ile yapabileceğiniz gibi özel kontroller sağlayan mevcut kitaplıkların bolluğunu kullanamazsınız. React Native'de, mevcut herhangi bir yerel kontrolün etrafına küçük bir sarmalayıcı yazmak ve çalışmasını sağlamak oldukça basittir. Bu nedenle şu anda Flutter için kararlı bir Google Haritalar uygulaması bulunmamaktadır.
Bununla birlikte, yerel kontrolleri gömme yeteneği üzerinde şu anda çalışılmaktadır ve geliştirici önizlemesindedir; bu, onu kullanabileceğiniz, ancak hatalarla uğraşmak zorunda kalabileceğiniz anlamına gelir. Bir kez piyasaya sürüldüğünde, React Native'e kıyasla Flutter'daki işlevsellikteki bu oldukça büyük deliği kapatacaktır.
Bu aynı Flutter özelliği - yerel olanlar yerine kendi widget kitaplığını kullanarak - tamamen yeni bir bileşen oluşturmak istediğinizde de büyük bir fayda sağlar. React Native'de, platforma özgü bir bileşen oluşturmanız ve onu bağlamalar aracılığıyla uygulamanıza aktarmanız gerekir.
Flutter ile doğrudan Dart kodunuzda özel bileşenler oluşturabilirsiniz. CustomPainter
gibi ihtiyacınız olan her şeyi çizmenize izin veren widget'larla kullanıcı arayüzü üzerinde tam kontrole sahipsiniz ve özel animasyonlar uygulamanıza izin veren bir widget kitaplığınız var. Bu özel widget'ları oluşturmak için asla Dart kod tabanının dışına çıkmanız gerekmez.
Ve bence bu Flutter'ın en büyük faydalarından biri. Kullanıcı arayüzünüz üzerinde Dart kodundan tam kontrole sahipsiniz ve artık geliştirmekte olduğunuz platformların yerel SDK'sını öğrenme konusunda endişelenmenize gerek yok.
Apaçi Cordova
Apache Cordova, bir tarayıcı sarmalayıcısı olduğu kadar bir çerçeve değildir. Cordova ile uygulamanızı web teknolojilerini kullanarak oluşturursunuz: HTML, CSS ve JavaScript. Cordova, bu web uygulamasını mobil platformlarda çalıştırmanız için bir yol sağlar ve uygulamanızın platformla etkileşime girebilmesi için JavaScript'te yerel platform API'lerini sunar.
Cordova için oluşturulmuş bir dizi farklı çerçeve vardır. Geçmişte kullandığım ünlülerden biri İyonik çerçevedir. Yerel platform bileşenlerine benzer görünen ve hareket eden bir dizi UI bileşeni sağlar. Ancak, bu bileşenler HTML/CSS/JavaScript kullanılarak uygulanır.
Cordova ve Ionic ile geliştirme deneyimi gerçekten güzel ve zaten bir web geliştiricisiyseniz, başlamak çok hızlı. Web teknolojilerini kullanarak uygulamalar oluşturduğunuz için, tüm web ekosistemine sahip olursunuz. HTML/CSS/JavaScript tabanlı yüz binlerce küçük bileşen ve kitaplığı düşünün ve bunların hepsini olmasa da çoğunu kullanabilirsiniz. Bu, ihtiyacınız olan çoğu "widget'ın" çevrimiçi olarak zaten mevcut olduğu anlamına gelir.
Bu aynı zamanda bir dezavantaj olsa da. Uygulamalarınızı oluşturmak için web teknolojilerini kullandığınızdan, uygulamanın yalnızca mobil cihazlarda çalışacak şekilde küçültülmüş bir web sitesi değil, bir mobil uygulama gibi göründüğünden ve hissettirdiğinden emin olmak için büyük özen gösterilmesi gerekir.
Cordova, bir MVP veya uygulamanızın ilk birkaç sürümünü geliştirmenin harika bir yolu olsa da, Flutter'da oluşturduğum ilk uygulama, bir Ionic uygulamasının bağlantı noktasıydı. Özellikle kaydırılacak çok fazla içeriğe sahip görünümlerde elde ettiğimiz performans iyileştirmeleri, ilk etkileşimden itibaren fark edildi.
Xamarin
Xamarian ile herhangi bir deneyimim yok, bu yüzden ikisini tam olarak karşılaştıramam. Ancak araştırmam sırasında, adil bir karşılaştırma yapan harika bir makaleye rastladım.
Makale Flutter ve Xamarian arasında bir bağ ile sonuçlansa da, şunu güvenle söyleyebilirim ki, eğer onu okuyor olsaydım ve iki çerçeve arasında bir seçim yapmak zorunda olsaydım, Flutter ile giderdim çünkü içinde parladığı şeyler şeylerdir. ki daha çok değer veriyorum.
Flutter'a Teknik Bir Bakış
Flutter: Hibrit Uygulama Çerçevelerinin “Oyun Motoru”
Hibrit mobil uygulama çerçeveleri arasında Flutter benzersiz bir yaklaşıma sahiptir. Kullanıcı arabirimini yerel platforma devretmez veya bir web görünümü kullanmaz. Bunun yerine Flutter, kullanıcı arayüzünü boyamak için kendi işleme motorunu kullanır. Bu, oyunların yerel kontroller kullanmak yerine kullanıcı arayüzlerinin tüm parçalarını oluşturan bir oyun motorunu nasıl kullandığına benzer.
Flutter, mobil uygulamanızdaki her şeyi çizmek için yüksek performanslı, savaşta test edilmiş Skia grafik motorunu kullanır. Flutter'ın arkasındaki Google mühendislerinin aklında çok daha fazla şey olduğundan eminim, ancak Skia'yı kullanmak aklıma gelen iki ana fayda sağlıyor:
- Uygulamanız, her biri için özelleştirilmeye gerek kalmadan tüm platformlarda tamamen aynı görünecek.
- Uygulamanız, yerel uygulamalara benzer şekilde harika bir performans elde edecektir, çünkü widget'ları çizmek için kodunuzu yerel platform koduna çevirmesi gereken bir ara katman yoktur.
Her Şey Bir Widget'tır
Flutter belgeleri, Flutter'dan “React-style framework” olarak bahseder. Bu, uygulamaların daha küçük widget'ları (React terminolojisindeki bileşenler ) bir araya getirerek nasıl oluşturulduğunda açıkça görülmektedir.
Bununla birlikte, Flutter, birlikte çalıştığım diğer çerçevelerden bir adım daha ileri bir widget yaklaşımı olan her şeyi alır.
Basit bir örnek dolgudur. Çoğu çerçevede dolgu, UI öğelerinin bir özelliğidir. Flutter'da Padding
, diğer widget'ları kendi içine sarabilen ve alt widget'ının çevresine dolgu ekleyebilen bir widget'tır.
Daha özel olarak, InheritedWidget
kullanıcı arayüzü yoktur ve herhangi bir kullanıcı etkileşimi sağlamaz. Tek işi, widget ağacına bilgi eklemektir, böylece ağacın derinliklerinde bir noktada bu bilgiyi çekebilirsiniz.
Örneğin, uygulamanızın kökü - MaterialApp
pencere öğesi - bir InheritedWidget
kullanarak pencere öğesi ağacına bir kimlik doğrulama hizmeti enjekte edebilir. Şimdi, ağacın derinliklerinde, kullanıcı profili sayfanız gibi başka bir sayfada, bu kimlik doğrulama hizmetini çıkarmak ve kullanmak için bir yöntem kullanabilirsiniz.
Bu her şey bir widget yaklaşımıdır, alışmak biraz zaman alır. Ancak bir kez aşina olduğunuzda, uygulamalarınızda işlevsellik oluşturmanın güçlü bir yolu haline gelir.
Çarpıntı, Dart ve Kaynağa Kazma
Flutter, Dart ile yakından bağlantılıdır. Çekirdek oluşturma motoru C/C++ ile oluşturulmuş olsa da, bu Flutter'ın yalnızca küçük bir parçasıdır.
Flutter kod tabanının çoğu Dart'ta yazılmıştır ve Flutter ekibinin bunu seçmesinin mükemmel nedenleri vardır. Ancak benim için en büyük fayda, çerçevenin kaynak koduna ve sağladığı tüm farklı widget'lara kolayca bakabilmem ve onlardan öğrenebilmemdi.
Bu, birçok geliştiricinin fark ettiğinden daha güçlü bir avantajdır. Çoğu geliştiricinin yanıtlarını çerçevelerinin/kütüphanelerinin kodunda bulmaya çalışmasını tavsiye ederim, çünkü bu yalnızca kapakların altında neler olduğunu anlamalarına yardımcı olmakla kalmaz, aynı zamanda onları yüksek kaliteli, iyi tasarlanmış koda maruz bırakır, ki bu kesin bir yoldur bir geliştirici olarak büyümek.
Yerel Platform Birlikte Çalışabilirliği
Flutter, UI katmanını sağlar ve iş mantığı saf Dart paketleri aracılığıyla kolayca yönetilirken, yerel platformun coğrafi konum ve kamera kontrolü gibi özelliklerine erişmek için pub.dev'in üçüncü taraf paketlerini kullanmak en kolay stratejidir.
Ancak, ihtiyacınız olan ve mevcut bir pakette bulunmayan bazı işlevler varsa, kendiniz yazmak çok zor değildir. Kendim platforma özgü herhangi bir paket oluşturmadım, ancak meraktan pek çoğu için kaynak koduna baktım.
Yerel bir uygulama geliştiricisi olmamama rağmen, çoğunlukla bu eklentilerin yerel kısımlarını anlayabildim ve mesaj geçişi yoluyla Dart çalışma zamanına nasıl bağlandıklarını görebildim. Deneyimli yerel platform geliştiricileri için yerel bir yetenekten yararlanmak için yeni bir paket oluşturmak çok kolay olacak.
Bir Sonraki Projenizde Flutter Kullanmalı mısınız?
Umarım bu makale, Flutter'ı mobil uygulama projenizde kullanıp kullanamayacağınıza karar vermeniz için size yeterli bilgiyi vermiştir. Hem artılarını hem de eksilerini listeleyerek Flutter'ın dengeli bir resmini vermeye çalıştım.
Kimse sizin yerinize karar veremezken, bir sonraki mobil uygulamamda Flutter'ı nasıl kullanacağım sorusuna nasıl yaklaşabileceğime dair bazı ayrılık tavsiyeleri verebilirim. Flutter'ın avantajları, bir uygulamanın ihtiyaç duyduğu tüm yetenekleri sağlayabiliyorsa, bunu bir çırpıda seçerdim.
Bunun nedeni, Flutter'ın şu anda eksik olduğu birkaç alanın yanı sıra, diğer tüm yönleri, geçen yıl beş farklı Flutter uygulamasını geliştirirken ve başlatırken hayran olduğum ve güvendiğim yönleridir:
- Flutter'ın başlama kolaylığı
- Geliştirme hızına odaklanmak için sıfırdan tasarlanmış bir çerçeve kullanmaktan elde edilebilecek hız kazanımları
- Hazır Dart kitaplıkları ve üçüncü taraf paketlerin zengin ekosistemi
- Flutter'ın her şeyi kullanarak uygulama geliştirmenin farklı ama son derece verimli yolu, bir widget yaklaşımıdır.
Mobil uygulama geliştirme hizmetleri sunanlar, henüz yapmadıysalar, Flutter'a ciddi bir görünüm vermek akıllıca olacaktır.
Son bir Flutter avantajına dikkat çekerek kapatacağım: Üzerinde çalıştığım herhangi bir kütüphane veya çerçevenin en iyi belgelerine sahip. Bir Flutter sorusunu google'da aramam nadirdir ve Flutter'ın kendi sitesinden bir sayfa tarafından yanıtlanmaz.
Bir Google Cloud İş Ortağı olarak, Toptal'ın Google sertifikalı uzmanları, en önemli projeleri için şirketlere talep üzerine hizmet vermektedir.