Flutter Çok Sorulan Sorular
Başlayalım
Flutter Nedir?
Flutter mobil, web ve masaüstü için güzel, yerel olarak derlenmiş uygulamaları tek bir kod tabanında oluşturmak için Google’ın taşınabilir kullanıcı arayüz araç takımıdır. Flutter mevcut kodla çalışır, dünyadaki geliştiriciler ve organizasyonlar tarafından kullanılır, ücretsiz ve açık kaynaktır.
Flutter ne yapar?
Kullanıcılar için Flutter, güzel uygulama kullanıcı arayüzlerinin hayata geçmesini sağlar.
Mobil uygulamaların geliştirilmesini hızlandırır ve platformlar arasında uygulama üretiminin maliyetini ve karmaşıklığını azaltır.
Tasarımcılar için Flutter, aslına uygunluk veya ödün vermeden orijinal tasarım vizyonunu sağlamaya yardımcı olur. Aynı zamanda verimli bir prototipleme aracı olarak da işlev görür.
Flutter kimin için?
Flutter, güzel mobil uygulamalar oluşturmanın daha hızlı bir yolunu veya tek bir yatırımla daha fazla kullanıcıya ulaşmanın yolunu arayan geliştiriciler içindir .
Flutter ayrıca, mobil geliştirme ekiplerine liderlik etmesi gereken mühendislik yöneticileri içindir . Flutter, mühendislerin daha fazla özelliği daha hızlı işlemek, aynı özelliği aynı anda iOS ve Android’e göndermek için geliştirme yatırımlarını birleştirerek ve bakım maliyetlerini düşürmek için geliştirme yatırımlarını birleştiren tek bir mobil uygulama geliştirme ekibi oluşturmasını sağlar.
İlk hedef kitlesi olmasa da, Flutter, orijinal tasarım vizyonlarını tutarlı bir şekilde, yüksek doğrulukla, mobil cihazlardaki tüm kullanıcılara sunmak isteyen tasarımcılar için de geçerli.
Flutter kullanmak için ne kadar deneyimli olmalıyım?
Flutter, nesne yönelimli kavramlara (sınıflar, yöntemler, değişkenler vb.) ve zorunlu programlama kavramlarına (döngüler, şartlamalar vb.) aşina olan programcıları yaklaşılabilir.
Flutter’ı öğrenmek ve kullanmak için önceden bir mobil deneyim gerekmez.
Programlama deneyimi çok az olan kişilerin prototip oluşturma ve uygulama geliştirme için Flutter’ı öğrendiğini ve kullandığını gördük.
Flutter ile ne tür uygulamalar oluşturabilirim?
Flutter, hem Android hem de iOS’ta çalıştırmak isteyen 2D mobil uygulamalar için optimize edilmiştir.
Ayrıca 3. parti SDK’ler ve daha fazlası dahil olmak üzere Flutter ile tam özellikli uygulamalar oluşturabilirsiniz.
Flutter kim tarafından oluşturuldu?
Flutter, Google ve topluluğun katkılarıyla oluşturulmuş açık kaynaklı bir projedir.
Flutter’la yapılan ünlü uygulamalar nelerdir?
Google’ın içindeki ve dışındaki geliştiriciler, iOS ve Android için güzel yerel uygulamalar oluşturmak için Flutter kullanıyor. Bu uygulamalardan bazıları hakkında bilgi edinmek için vitrini ziyaret edin.
Flutter’ı benzersiz yapan nedir?
Flutter, mobil uygulamalar oluşturmak için kullanılan diğer seçeneklerden farklıdır; çünkü Flutter, ne WebView ne de cihazla birlikte verilen OEM widget’larını kullanmaz. Bunun yerine, Flutter widget çizmek için kendi yüksek performanslı renderleme motorunu kullanıyor.
Ek olarak, Flutter farklıdır çünkü yalnızca ince bir C / C ++ kodu katmanına sahiptir. Flutter, sistemlerinin çoğunu (birleştirme, el hareketi, animasyon, çerçeve, gereç vb.) Dart (modern, özlü, nesne yönelimli) dil olarak geliştiricilerin kolayca okumaya, değiştirmeye veya kaldırmaya yönlendirebilir. Bu, geliştiricilere sistem üzerinde muazzam bir kontrol sağlamanın yanı sıra, çıtayı sistemin çoğunluğu için ulaşılabilirliğe önemli ölçüde düşürür.
Flutter ne sağlıyor?
Flutter SDK içinde neler var?
- Metin için mükemmel desteği ile yoğun şekilde optimize edilmiş, mobil ilk 2D işleme motoru
- Modern tepki tarzı çerçeve
- Android ve iOS için zengin widget kümesi
- Birim ve entegrasyon testleri için API’ler
- Sisteme ve 3. parti SDK’lara bağlanmak için birlikte çalışma ve eklenti API’leri
- Windows, Linux ve Mac’te testleri çalıştırmak için kullanılan headless test çalıştırıcısı
- Uygulamalarınızı oluşturmak, inşa etmek, test etmek ve derlemek için komut satırı araçları
Flutter herhangi bir editör veya IDE ile çalışıyor mu?
Android Studio , IntelliJ IDEA ve VS Code için eklentileri destekliyoruz.
Eklentilerin nasıl kullanılacağına ilişkin ipuçları için kurulum ayrıntıları için düzenleyici yapılandırmasına ve Android Studio / IntelliJ ve VS Koduna bakın.
Alternatif olarak, bir terminalde flutter
komutunun bir kombinasyonunu ve Dart düzenlemeyi destekleyen birçok editörden birini kullanabilirsiniz.
Flutter bir framework ile geliyor mu?
Evet! Flutter, React’ten ilham alan modern bir framework’le gelir. Flutter’un framework, katmanlı ve özelleştirilebilir (ve isteğe bağlı) olacak şekilde tasarlanmıştır.
Flutter widget’larla birlikte mi geliyor?
Evet! Flutter, bir dizi yüksek kaliteli Malzeme Tasarımı ve Cupertino (iOS tarzı) widget’ları , düzenleri ve temalarıyla birlikte gelir. Tabii ki, bu aletler sadece bir başlangıç noktasıdır. Flutter, kendi widget’larınızı oluşturmayı kolaylaştırmak veya mevcut widget’ları özelleştirmek için tasarlanmıştır.
Flutter, Materyal Temalarını destekliyor mu?
Evet! Flutter ve Material ekipleri yakın işbirliği içindedir ve Material Theming tamamen desteklenir. Bunun birkaç örneği MDC-103 Flutter: Material Theming codelab’da gösterilmektedir.
Teknoloji
Flutter hangi teknolojiyle üretilmiştir?
Flutter C, C ++, Dart ve Skia (2 boyutlu render motoru) ile inşa edilmiştir. Ana bileşenlerin daha iyi bir görüntüsü için bu mimari şemasına bakın.
Flutter, kodumu Android’de nasıl çalıştırıyor?
Motorun C ve C ++ kodu Android’in NDK’sı ile derlenmiştir. Dart kodu (hem SDK’lar hem de sizin) bir yerli, ARM ve x86 kütüphanelerinde derlenmiş olan önceden belirlenmiş (AOT) kodlardır. Bu kütüphaneler bir “runner” Android projesine dahil edildi ve her şey bir APK içine yerleştirildi. Başlatıldığında, uygulama Flutter kitaplığını yükler. Herhangi bir oluşturma, giriş veya olay işleme vb. derlenen Flutter ve uygulama koduna verilir. Bu, birçok oyun motorunun çalışma biçimine benzer.
Hata ayıklama modu, Dartful kodunu çalıştırmak için sanal bir makine (VM) kullanır (bu nedenle, Stateful Hot Reload’i etkinleştirmek için, insanlara biraz daha yavaş olduklarını hatırlatmak için gösterdikleri “hata ayıklama” başlığını kullanın).
Flutter kodumu iOS’ta nasıl çalıştırıyor?
Motorun C ve C ++ kodu LLVM ile derlenmiştir. Dart kodu (hem SDK’lar hem de sizin) bir yerel ARM kütüphanesinde derlenmiş olan önceden belirlenmiş (AOT) kodlardır. Bu kütüphane bir “koşucu” iOS projesinde yer alıyor ve her şey bir .ipa
. Başlatıldığında, uygulama Flutter kitaplığını yükler. Herhangi bir oluşturma, giriş veya olay işleme vb. derlenmiş Flutter ve uygulama koduna verilir. Bu, birçok oyun motorunun çalışma biçimine benzer.
Hata ayıklama modu, Dartful kodunu çalıştırmak için sanal bir makine (VM) kullanır (bu nedenle, Stateful Hot Reload’i etkinleştirmek için, insanlara biraz daha yavaş olduklarını hatırlatmak için gösterdikleri “hata ayıklama” başlığını kullanın).
Flutter, sistemimin OEM widget’larını kullanıyor mu?
Hayır. Bunun yerine, Flutter, Flutter’ın çerçevesi ve motoru tarafından yönetilen ve oluşturulan bir dizi widget (Malzeme Tasarımı ve Cupertino (iOS tarzı) widget’lar dahil) sunar.
Sonucun daha kaliteli uygulamalar olacağını umuyoruz. OEM widget’larını yeniden kullanırsak, Flutter uygulamalarının kalitesi ve performansı bu widget’lerin kalitesiyle sınırlı olacaktır.
Modern uygulama tasarım trendleri, daha fazla hareketli kullanıcı arayüzü ve ilk marka tasarımları isteyen tasarımcılara ve kullanıcılara işaret ediyor. Bu özelleştirilmiş, güzel tasarım seviyesine ulaşmak için, Flutter OEM widget’ları yerine pikselleri sürmek için tasarlandı.
Aynı oluşturucuyu, çerçeveyi ve widget kümesini kullanarak, iki ayrı kod tabanını ve özellik kümesini hizalamak için dikkatli ve maliyetli bir planlama yapmak zorunda kalmadan hem iOS hem de Android için aynı anda yayınlamak daha kolaydır.
Kullanıcı arabiriminiz için tek bir dil, tek bir çerçeve ve tek bir kitaplık kümesi kullanarak (kullanıcı arabiriminizin her mobil platform için farklı olmasına veya büyük ölçüde tutarlı olmasına bakılmaksızın) uygulama geliştirme ve bakım maliyetlerini düşürmeye yardımcı olmayı amaçlıyoruz.
Mobil işletim sistemim yeni widget’ları güncelleyip tanıtırken ne olur?
Flutter ekibi, iOS ve Android’den yeni mobil widget’ların kabulü ve talebini izler ve yeni widget’lara destek oluşturmak için toplulukla birlikte çalışmayı amaçlar. Bu çalışma, alt seviye çerçeve özellikleri, yeni oluşturulabilir widget’lar veya yeni widget uygulamaları biçiminde gelebilir.
Flutter’ın katmanlı mimarisi, pek çok widget kütüphanesini desteklemek için tasarlanmıştır ve widget kütüphaneleri oluşturmaya ve sürdürmeye teşvik eder, destekleriz.
Bir Flutter uygulaması oluşturmak için hangi işletim sistemlerini kullanabilirim?
Flutter, Linux, Mac ve Windows’ta geliştirmeyi destekler.
Flutter hangi dilde yazılmıştır?
Birçok dile ve çalışma süresine baktık ve sonunda Dart’ı çerçeve ve araçlar için kullandık. Temel grafik çerçevesi ve Dart sanal makinesi, C / C ++ dilinde uygulanır.
Flutter neden Dart kullanmayı seçti?
Flutter, değerlendirme için dört temel boyut kullandı ve çerçeve yazarlarının, geliştiricilerin ve son kullanıcıların ihtiyaçlarını dikkate aldı. Bazı dillerin bazı gereksinimleri karşıladığını gördük, ancak Dart tüm değerlendirme boyutlarımızda yüksek puan aldı ve tüm gereksinimlerimizi ve kriterlerimizi karşıladı.
Dart çalışma süreleri ve derleyiciler Flutter için bu iki kritik özelliğin birleşimini destekler.
Ek olarak, Flutter’da kullanılmak üzere Dart’ı geliştirmek için aktif olarak yatırım yapan Dart topluluğuyla yakın çalışma fırsatı bulduk. Örneğin, Dart’ı kabul ettiğimizde, dil, öngörülebilir, yüksek performans elde etmede aracı olan yerli ikili dosyaları üretmek için önceden yapılmış bir araç zincirine sahip değildi, ama şimdi dil, Dart ekibinin Flutter için oluşturduğu yapı. Benzer şekilde, Dart VM daha önce verim için optimize edilmiş ancak ekip şimdi VM’yi gecikme için optimize ediyor, bu da Flutter’ın iş yükü için daha önemli.
Dart, aşağıdaki ana kriterlere göre aldığı yüksek puanlar:
Geliştirici üretkenliği
Flutter’ın temel değer önermelerinden biri, geliştiricilerin aynı iOS ve Android için aynı kod tabanına sahip uygulamalar oluşturmasına izin vererek mühendislik kaynaklarını kurtarmasıdır. Yüksek verimli bir dil kullanmak, geliştiricileri daha da hızlandırır ve Flutter’ı daha çekici hale getirir. Bu hem çerçeve ekibimiz hem de geliştiricilerimiz için çok önemliydi. Flutter’ın büyük kısmı kullanıcılarımıza verdiğimiz dilde inşa edilmiştir, bu nedenle geliştiricilerimiz için çerçevenin ve widget’ların yaklaşılabilirliği veya okunabilirliğinden ödün vermeden 100k kod satırında üretken kalmamız gerekir.Nesne yönelimi
Flutter için, Flutter’ın problem alanına uygun bir dil istiyoruz. Endüstri, nesne yönelimli dillerde kullanıcı arayüzü çerçeveleri oluşturma konusunda onlarca yıllık deneyime sahiptir. Nesneye yönelik olmayan bir dil kullanabilsek de, bu birkaç zor problemi çözmek için tekerleği yeniden icat etmek anlamına gelir. Ayrıca, geliştiricilerin büyük bir çoğunluğu, Flutter ile nasıl geliştirileceğini öğrenmeyi kolaylaştıran, nesne yönelimli geliştirme konusunda deneyime sahiptir.Tahmin edilebilir, yüksek performans
Flutter ile, geliştiricilerin hızlı, akıcı kullanıcı deneyimleri yaratmalarını sağlamak istiyoruz. Bunu başarmak için, her animasyon karesinde önemli miktarda son geliştirici kodu çalıştırabilmemiz gerekir. Bu, hem yüksek performans sağlayan hem de öngörülen performansı düşüren, düşmüş karelere neden olacak periyodik duraklamalar olmadan bir dile ihtiyacımız olduğu anlamına gelir.Hızlı tahsis
Flutter çerçevesi, küçük, kısa ömürlü tahsisleri verimli bir şekilde işleyen temelde bellek ayırıcıya dayanan işlevsel stilde bir akış kullanır. Bu tarz, bu özelliğe sahip dillerde geliştirildi ve bu özelliği olmayan dillerde verimli bir şekilde çalışmıyor.
Flutter herhangi bir Dart kodunu çalıştırabilir mi?
Flutter, içe aktarmayan çoğu Dart kodunu çalıştırabilir (transit veya doğrudan) dart: mirrors veya dart: html.
Flutter motoru ne kadar büyük?
Temmuz 2019’da, en az bir Flutter uygulamasının indirme boyutunu ölçtük yaklaşık olarak bir sürüm olarak paketlenmiş sıkıştırılmış APK ve Minimal Flutter uygulamasının (Malzeme Bileşenleri yok, sadece tek bir Center
widget’ı) ARM için 4.3 MB ve ARM 64 için 4.6 MB.
ARM’de çekirdek motor yaklaşık 3.2 MB (sıkıştırılmış), çerçeve + uygulama kodu yaklaşık 920,6 KB (sıkıştırılmış) LICENSE dosyası 54,3 KB (sıkıştırılmış) gerekli Java kodu (classes.dex) 113,6 KB (sıkıştırılmış).
ARM64’te çekirdek motor yaklaşık 3.5 MB (sıkıştırılmış), çerçeve + uygulama kodu yaklaşık 872 KB (sıkıştırılmış) LICENSE dosyası 54,3 KB (sıkıştırılmış) gerekli Java kodu (classes.dex) 113,6 KB (sıkıştırılmış).
İOS’ta, aynı uygulamanın bir IPA sürümü Apple’ın App Store Connect tarafından bildirildiği gibi bir iPhone X’te 10.9 MB’lık bir indirme boyutuna sahiptir. IPA, APK’den daha büyüktür çünkü Apple, IPA içindeki ikili dosyaları şifreleyerek sıkıştırmayı daha az verimli hale getirir (Apple’ın QA1795’in iOS Uygulama Mağazasına Özel Hususlar bölümüne bakın).
Elbette, YMMV ve kendi uygulamanızı ölçmenizi öneririz. Bir Android uygulamasını ölçmek için, flutter build apk
(sürüm 1.7.8 + düzeltme.3 ve sonraki sürümlerde yeni – --split-per-abi
seçeneğini kullanarak) çalıştırın ve --split-per-abi
yükleyin .(build / app / outputs / apk / release / app) -armeabi-v7a-release.apk veya inşa / app / output / apk / release / app-arm64-v8a-release.apk) Android Studio ( Android Studio talimatları ) içine ayrıntılı bir boyut raporu bulunur. Bir iOS uygulamasını ölçmek için, Apple App Store Connect’e ( iOS talimatları ) IPA yükleyin ve oradan boyut raporunu alın.
Yetenekleri
Ne tür bir uygulama performansı bekleyebilirim?
Mükemmel performans bekleyebilirsiniz. Flutter, geliştiricilerin kolayca sabit bir 60 fps elde etmesine yardımcı olmak için tasarlanmıştır. Flutter uygulamaları yerel olarak derlenmiş kodlarla çalışır.(tercümanlar dahil değildir) Bu, Flutter uygulamalarının hızlı bir şekilde başlaması anlamına gelir.
‘Hot reload’nin’ Hot restart’dan ‘farkı nedir?
Hot Reload, güncelleştirilmiş kaynak kod dosyalarını çalışan Dart VM’ye (Sanal Makine) enjekte ederek çalışır. Bu, yalnızca yeni sınıflar eklemekle kalmayıp, mevcut sınıflara yöntemler ve alanlar eklemeyi ve varolan işlevleri değiştirmeyi de içerir. Birkaç tür kod değişikliği olsa da yeniden yüklenemez.
- Global değişken başlatıcılar
- Statik alan başlatıcılar
- Uygulamanın
main()
yöntemi
Ek ayrıntılar için bkz. Çalışırken yeniden yükleme .
Flutter web üzerinde çalışıyor mu?
Flutter web şu anda teknik önizlemede . Flutter deposunun bir çatalı içinde web için Flutter geliştiriyoruz. Bu, çekirdek Flutter repo’yu sabit tutarken hızlı yineleme sağlar. Web önizlemesinde çalışmak için mevcut Flutter kodunu yeniden paketleyebilirsiniz, ancak hala önizlemedeyken bazı uyarılar vardır. Daha fazla bilgi için web talimatlarını inceleyin.
Masaüstü uygulamaları oluşturmak için Flutter’ı kullanabilir miyim?
Evet, ama şu anda çok iyi desteklenmiyor. Bunu birinci sınıf bir deneyim haline getirmek için çalışıyoruz. Şu andaki ilerlememiz wikide belgelenmiştir.
Flutter’ı mevcut yerel uygulamamın içinde kullanabilir miyim?
Evet, bu kullanım durumu için mevcut Android’inize bir Flutter görünümü gömebilirsiniz.
Bunun iki güncel gösterimi platform_view ve flutter_view örnekleridir. Bazı başlangıç belgelerine wiki sayfasından ulaşılabilir.
Platform hizmetlerine ve sensörler ve yerel depolama gibi API’lere erişebilir miyim?
Evet. Flutter, geliştiricilere işletim sisteminden platforma özgü bazı hizmetlere ve API’lere erişime izin vermeyen erişim sağlar. Bununla birlikte, çoğu platformlar arası API’de “en düşük ortak payda” sorununu önlemek istiyoruz, bu nedenle tüm yerel hizmetler ve API’ler için platformlar arası API’ler oluşturmaya niyetli değiliz.
Bazı platform hizmetleri ve API’ler, Pub sitesinde kullanıma hazır paketlere sahiptir. Mevcut bir paketi kullanmak kolaydır .
Son olarak, geliştiricilerin platform ve üçüncü taraf API’lerle kendi entegrasyonlarınızı oluşturmak için Flutter’un senkronize olmayan mesaj geçiş sistemini kullanmaya teşvik ediyoruz. Geliştiriciler, platform API’lerini ihtiyaç duydukları kadar az veya çok gösterebilir ve projeleri için en uygun soyutlama katmanlarını oluşturabilirler.
Birlikte verilen widget’ları genişletebilir ve özelleştirebilir miyim?
Kesinlikle. Flutter’ın widget sistemi kolayca özelleştirilebilecek şekilde tasarlanmıştır.
Her widget çok sayıda parametre sağlamak yerine, Flutter kompozisyonu benimser. Özel ve standart pencere öğeleri oluşturmak için yeniden kullanabileceğiniz ve bir araya getirebileceğiniz pencere bileşenlerinden oluşur. Örneğin, genel bir düğme gerecini alt sınıflamak yerine RaisedButton ile bir malzeme gerecini GestureDetector gereciyle birleştirir. Malzeme widget’ı görsel tasarımı sağlar ve GestureDetector widget’ı etkileşim tasarımını sağlar.
Özel görsel tasarıma sahip bir düğme oluşturmak için görsel tasarımınızı uygulayan widget’ları etkileşim tasarımını sağlayan bir GestureDetector ile birleştirebilirsiniz. Örneğin, CupertinoButton bu yaklaşımı izler ve bir GestureDetector’ı görsel tasarımını uygulayan diğer birçok widget ile birleştirir.
Widget’larınızın görsel ve etkileşimli tasarımı üzerinde maksimum kontrol sağlarken aynı zamanda büyük miktarda kod kullanımına da izin verir. Bu çerçevede, karmaşık widget’ları görsel, etkileşim ve hareket tasarımını ayrı ayrı uygulayan parçalara ayırdık. Bu widget’ları remiks yapabilirsiniz, ancak tam ifade aralığına sahip kendi özel widget’larınızı yapmak istersiniz.
Mobil platformumun varsayılan programlama diliyle birlikte çalışabilir miyim?
Evet, Flutter, Android’de Java veya Kotlin koduyla ve iOS’ta ObjectiveC veya Swift koduyla entegrasyon dahil olmak üzere platforma çağrı yapılmasını destekler. Bu, bir Flutter uygulamasının bir BasicMessageChannel
kullanarak mobil platforma mesaj gönderip alabileceği esnek bir mesaj geçiş tarzı ile etkinleştirilir.
Flutter’daki platform ve üçüncü taraf hizmetlere platform kanalları ile erişme hakkında daha fazla bilgi edinin.
İOS ve Android’de pil durumu bilgilerine erişmek için bir platform kanalının nasıl kullanılacağını gösteren örnek bir proje .
JSON / XML / kullanabilir miyim Flutter ile protobuffers, vb?
Kesinlikle. Pub sitesinde JSON, XML, protobufs ve diğer birçok yardımcı program ve format için kütüphaneler var.
JSON’u Flutter ile kullanma hakkında ayrıntılı bir bilgi almak için JSON eğitimine bakın .
Flutter ile 3D (OpenGL) uygulamaları oluşturabilir miyim?
Bugün, OpenGL ES veya benzeri bir araçla 3D’yi desteklemiyoruz. Optimize edilmiş bir 3D API’yi ortaya çıkarmak için uzun vadeli planlarımız var, ancak şu anda 2D’ye odaklandık.
Flutter uygulamaları Chromebook’larda çalışıyor mu?
Bazı Chromebook’larda Flutter uygulamalarının çalıştığını gördük. Chromebook’larda Flutter’ı çalıştırmayla ilgili sorunları takip ediyoruz.
Framework
Flutter’ın biçimlendirme dili nerede? Neden Flutter’ın biçimlendirme sözdizimi yok?
Flutter kullanıcı arayüzleri zorunlu, nesne yönelimli bir dille inşa edilmiştir (Dart, Flutter’un çerçevesini oluşturmak için kullanılan dil). Flutter, bildirimsel bir işaretleme ile gönderilmez.
Dinamik olarak kodla oluşturulan kullanıcı arayüzlerinin daha fazla esneklik sağladığını gördük. Örneğin, sağlam bir işaretleme sisteminin, ısmarlama davranışlarla özelleştirilmiş widget’ları ifade etmesini ve üretmesini zor bulduk.
Ayrıca “ilk önce kod” un sıcak yükleme ve dinamik ortam uyarlamaları gibi özelliklere daha iyi izin verdiğini gördük.
Daha sonra anında widget’lara dönüştürülen özel bir dil oluşturmak mümkündür. Derleme yöntemleri “sadece kod” olduğundan, işaretlemenin yorumlanması ve widget’lara dönüştürülmesi de dahil olmak üzere her şeyi yapabilirler.
Uygulamamın sağ üst kısmında bir Hata Ayıklama başlığı / şeridi var. Bunu neden görüyorum?
Varsayılan olarak flutter run
komutu hata ayıklama oluşturma yapılandırmasını kullanır.
Hata ayıklama yapılandırması Dart kodunuzu bir VM’de (Sanal Makine) çalıştırır ve hot reload ile hızlı bir geliştirme döngüsü sağlar (sürüm oluşturma standart Android ve iOS araç zincirleri kullanılarak derlenir).
Hata ayıklama yapılandırması ayrıca geliştirme sırasında erkenden hataları yakalamanıza yardımcı olan, ancak çalışma zamanı maliyetini dayatan tüm varlıkları kontrol eder. “Hata ayıklama” başlığı, bu kontrollerin etkin olduğunu gösterir. Uygulamanızı bu kontroller olmadan da çalıştırabilirsiniz .
IntelliJ için Flutter eklentisini kullanıyorsanız, profil modunda Çalıştır> Flutter Çalıştır menüsünü veya Yayın Modu’ndaki menü girişlerini kullanarak uygulamayı profil veya sürüm modunda başlatabilirsiniz.
Flutter’ın çerçevesi hangi programlama paradigmasını kullanıyor?
Flutter çoklu paradigma programlama ortamıdır. Flutter’da son birkaç on yılda geliştirilen birçok programlama tekniği kullanılmaktadır. Her birini tekniğin güçlü yanlarının özellikle uygun olduğuna inandığımız yerlerde kullanıyoruz.
Kompozisyon: Flutter tarafından kullanılan birincil paradigma, daha karmaşık etkiler elde etmek için bir araya getirilmiş dar davranış kapsamı olan küçük nesneleri kullanmaktır. Flutter widget kütüphanesindeki birçok widget bu şekilde oluşturulmuştur.
İşlevsel programlama: Tüm uygulamalar, temel olarak argümanların diğer fonksiyonlarla nasıl eşleştiğini, düzenleri hesaplayan veya grafikleri çizen ilkellere dayanarak tanımlayan fonksiyonlar olan StatelessWidget’lar ile oluşturulabilir. Ek olarak, tüm Widget sınıfı hiyerarşisinin yanı sıra Rect ve TextStyle gibi sayısız destek sınıfları da dahil olmak üzere değişken veri yapılarını yoğun kullanır. Daha küçük bir ölçekte, işlevsel stilden (harita, küçültme, vb.) ağır şekilde faydalanan Dart’ın yinelenebilir API’si, çerçevedeki değer listelerini işlemek için sıklıkla kullanılır.
Olay odaklı programlama: Kullanıcı etkileşimleri, olay işleyicileri ile kaydedilen geri aramalara gönderilen olay nesneleriyle temsil edilir. Ekran güncellemeleri, benzer bir geri arama mekanizması tarafından tetiklenir.
Sınıf tabanlı nesne yönelimli programlama: Çerçevenin API’lerinin çoğu, kalıtımsal sınıflar kullanılarak oluşturulur. Temel sınıflarımızda çok üst düzey API’ler tanımladığımız bir yaklaşım kullanıyoruz, sonra bunları alt sınıflarda yinelemeli olarak uzmanlaştırıyoruz.
Prototip tabanlı nesne yönelimli programlama: ScrollPhysics sınıfı, çalışma zamanında dinamik olarak kaydırmaya uygulanan fiziği oluşturmak için örnekleri zincirler.
Zorunlu programlama: Genellikle bir nesnenin içine alınmış durumla eşleştirilmiş basit zorunlu programlama, en sezgisel çözümü sağladığı yerde kullanılır.
Reaktif programlama: Widget ve element ağaçları bazen reaktif olarak tanımlanır, çünkü widget’ın yapıcısında sağlanan yeni girdiler, widget’ın inşa yöntemiyle ve alt widget’larda yapılan değişiklikler (ör. kullanıcı girişine) olay işleyicileri ile ağacı yedekler. Hem fonksiyonel-reaktif hem de zorunlu-reaktifin yönleri, ihtiyaçlarına bağlı olarak mevcuttur. Pencere öğesinin yapılandırmasındaki değişikliklere nasıl tepki verdiğini açıklayan bir ifadeden oluşan derleme yöntemlerine sahip pencere araçları, işlevsel reaktif pencere öğeleridir (örneğin, malzeme ayırıcı sınıfı). Yapım yöntemleri, birkaç ifadenin üzerine bir çocuk listesi oluşturan, widget’ın yapılandırmasındaki değişikliklere nasıl tepki verdiğini açıklayan widget’lar zorunlu reaktif widget’lardır (örn. Chip sınıfı).
Genel programlama: Tipler, geliştiricilerin programlama hatalarını erken yakalamalarına yardımcı olmak için kullanılabilir. Flutter çerçevesi, bu konuda yardımcı olmak için genel programlama kullanır. Örneğin, State sınıfı, ilişkili widget’in cinsine göre parametrelendirilir, böylece Dart analizörü durumların ve widget’lerin uyumsuzluklarını yakalayabilir. Benzer şekilde, GlobalKey sınıfı bir uzak parametrenin durumuna güvenli bir şekilde (çalışma zamanı denetimi kullanılarak) erişebilmesi için bir tür parametre alır, rota arayüzü açılırken kullanması beklenen tür ile parametrelenir, böylece eşleşmeyen öğeler analiz sırasında veya hata ayıklama sırasında çalışma zamanında erken yakalanabilir.
Eşzamanlı programlama: Flutter, Futures ve diğer asenkron API’leri yoğun şekilde kullanır. Örneğin, animasyon sistemi bir geleceğin tamamlanmasıyla bir animasyonun ne zaman biteceğini bildirir. Görüntü yükleme sistemi benzer şekilde, bir yükün tamamlandığını bildirmek için gelecekleri kullanır.
Proje
Nereden destek alabilirim?
Bir hatayla karşılaştığınızı düşünüyorsanız, sorun izleyicimize yazın . “HOWTO” tipi sorular için stackoverflow‘ı da kullanabilirsiniz. Tartışmalar için flutter-dev@googlegroups.com adresindeki posta listemize katılabilirsiniz.
Nasıl katılabilirim?
Flutter açık kaynaklı ve katkıda bulunmanızı tavsiye ediyoruz. Sorun izleyicimizdeki özellik istekleri ve hatalar ile ilgili sorunları kolayca oluşturarak başlayabilirsiniz.
Flutter-dev@googlegroups.com adresindeki posta listemize katılmanızı ve Flutter’ı nasıl kullandığınızı ve bununla ne yapmak istediğinizi bize bildirmenizi öneririz.
Katkıda bulunma koduyla ilgileniyorsanız, Katkıda Bulunma Kılavuzumuzu okuyarak başlayabilir ve kolay başlangıç sorunları listemize göz atabilirsiniz.
Flutter açık kaynak mı?
Evet, Flutter açık kaynaklı bir teknolojidir. Projeyi GitHub’da bulabilirsiniz.
Flutter ve bağımlılıkları için hangi yazılım lisansları geçerlidir?
Flutter iki bileşen içerir. Dinamik olarak bağlanmış bir ikili olarak gönderilen bir motor ve Dart çerçevesidir. Motor, birçok bağımlılığa sahip birden fazla yazılım bileşeni kullanır; tam listesini lisans dosyasında görüntüleyin .
Çerçeve tamamen kendi kendine yeten ve sadece bir lisans gerektirir.
Ayrıca, kullandığınız Dart paketlerinin kendi lisans gereksinimleri olabilir.
Flutter uygulamamın göstermesi gereken lisansları nasıl belirleyebilirim?
Göstermeniz gereken lisansların listesini bulmak için bir API var:
Uygulamanızın Drawer varsa , AboutListTile ekleyin.
Uygulamanızın Drawer yoksa ancak Malzeme Bileşenleri kütüphanesini kullanıyorsa, showAboutDialog veya showLicensePage’i arayın .
Daha özel bir yaklaşım için, ham lisansları LicenseRegistry’den alabilirsiniz .
Flutter’da kim çalışıyor?
Flutter açık kaynaklı bir projedir. Şu anda, gelişimin büyük kısmı Google’da mühendisler tarafından yapılmaktadır. Flutter konusunda heyecanlıysanız, topluluğa katılmanızı ve Flutter’a katkıda bulunmanızı öneririz!
Flutter’in rehber ilkeleri nelerdir?
Buna inanıyoruz:
- Her potansiyel kullanıcıya ulaşmak için geliştiricilerin birden fazla mobil platformu hedeflemesi gerekir.
- Bugün varolan HTML ve WebViews, sürekli yüksek kare hızlarına ulaşmayı ve otomatik davranış (kaydırma, düzen) ve eski destek nedeniyle yüksek kaliteli deneyimler sunmayı zorlaştırıyor.
- Bugün, aynı uygulamayı birçok kez oluşturmak çok pahalı: farklı ekipler, farklı kod tabanları, farklı iş akışları, farklı araçlar vb.
- Geliştiriciler, birden fazla hedef platform için mobil uygulamalar oluşturmak için tek bir kod temeli kullanmanın daha kolay ve daha iyi bir yolunu istiyorlar ve kalite, kontrol veya performanstan ödün vermek istemiyorlar.
Üç şeye odaklandık:
- Kontrol – Geliştiriciler, sistemin tüm katmanlarına erişmeyi ve kontrol etmeyi hak eder.
- Performans – Kullanıcılar tam anlamıyla akıcı, hızlı uygulamaları hak ediyor.
- Sadakat – Herkes hassas, güzel, keyifli mobil uygulama deneyimlerini hak ediyor.
Apple Flutter uygulamamı reddedecek mi?
Apple için konuşamayız, ancak Apple’ın politikaları yıllar içinde değişti ve uygulama mağazası, Unity ve Flutter gibi teknolojilerle oluşturulmuş birçok uygulama içeriyor. Apple, Hamilton gibi Flutter ile yapılan uygulamalar mevcuttur .
Tabii ki, Apple nihayetinde ekosistemlerinden sorumludur, ancak hedefimiz Flutter uygulamalarının Apple’ın App Store’una dağıtılmasını sağlamak için elimizden gelen her şeyi yapmaya devam etmektir.
- 99
- 6053
0 Yorumlar