Flutter'ın ilk alfa versiyonu neredeyse üç yıl önce - Mayıs 2017'de çıktı. O zamanlar kimse bu kadar kısa sürede bu kadar popüler olacağını düşünmemişti. GitHub'da şimdiden en büyük rakibi React Native'den daha fazla yıldız aldı ve Aralık 2018'deki kararlı sürümden bu yana, daha fazla şirket potansiyelini fark etmeye başladı ve Flutter'da uygulama yazmaya istekli geliştiriciler arıyor.
Belki şu an mevcut teknolojinizden sıkıldınız veya sadece yan projeleriniz için sadece Flutter öğrenmek istiyorsunuz. Dart ve Flutter hakkında bilmeniz gerekenleri merak ediyor olabilirsiniz. Ya da belki Flutter geliştiricisi olarak yeni bir iş için bir röportaj yapıyorsunuz. Durum ne olursa olsun, umarım makalem daha iyi hazırlanmanıza yardımcı olur.
Soruların bazıları (veya çoğu) size önemsiz görünse de, dürüst olalım… kararlı sürüm o kadar uzun süredir piyasaya sürülmedi, bu yüzden herhangi birinin henüz çok fazla deneyim beklediğinden şüpheliyim. Gördüğüm kadarıyla, Android veya iOS ile iyi bir deneyiminiz olduğu sürece, Flutter ve Dart'ın bazı temellerini bilmek yeterli.
Umarım aşağıdaki gibi iş teklifleri görmeyiz:
"Gereksinimler: Flutter ile 5 yıllık deneyim."
Bir dakika ne?
Ayrıca, sorularla ilgili herhangi bir geri bildiriminiz varsa veya iyi olanlardan haberiniz varsa - çekinmeyin bana bildirin, ben de bu listeyi güncel tutmaya çalışacağım.
Dart, Google tarafından 2011 yılında oluşturuldu. Web, sunucu ve mobil uygulamalar oluşturmak için güçlü kitaplıklar ve çalışma zamanlarına sahip açık kaynaklı, ölçeklenebilir bir programlama dilidir.
'this've kurucular oluştururken amacı nedir?
thisÖrneğin - Anahtar kelime özelliklerine değerler atamak için kullanışlı bir kısayol olarak yapıcıları kullanılabilir
MyClass(this.param, this.param2, this.param3);.
Adlandırılmış parametreleri kullanırken, bildirimde olduğu gibi aynı sırayı korumamız gerekmez ve parametreleri isimlerini kullanarak geçirebiliriz - örneğin
doSomething(‘First’, prefix: ‘1.’).
Genişletme yöntemleri, temelden olanlar da dahil olmak üzere herhangi bir türe yeni işlevler eklemeyi mümkün kılar. Dart 2.7'de tanıtıldılar ve Flutter'da da kullanıma hazırlar.
extension NumberParsing on String { int parseInt() { return int.parse(this); } }
Hayır, mümkün değil. Bunun nedeni, uzatma yöntemlerinin alıcının statik türüne göre çözülmesidir. Uzantı yöntemleri statik olarak çözüldüğünden, statik bir işlevi çağırmak kadar hızlıdırlar.
Bunu, aşağıdaki gibi bir şablon parametresi ekleyerek yapabiliriz:
extension MyFancyList<T> on List<T> { int get doubleLength => length * 2; List<T> operator -() => reversed.toList(); List<List<T>> split(int at) => <List<T>>[sublist(0, at), sublist(at)]; }
Fabrika kurucuları bir
factoryanahtar sözcük eklenerek oluşturulur . Bunlar alt türleri veya hatta
null- örneğin, döndürebilir
factory User.fromXml(String xml).
Boş değerin farkında olan iki operatör vardır - birincisi
??ve ikincisi
??=.
Örnek:
int x; x ??= 1,
var x = y ?? 2
?.İşleci kullanarak nesne üzerindeki bir özelliğe veya yönteme koşullu olarak erişebiliriz - örn
x?.doSomething().
Bunu yaparak, kriterlerimizi karşıladığından emin olmak için bir değer belirlerken bazı ek kontroller ekleyebiliriz. Ayrıca, erişim seviyesi alıcı ve ayarlayıcıyı ayrı ayrı kontrol edebiliriz.
class MyClass { int _aProperty = 0; int get aProperty => _aProperty; set aProperty(int value) { if (value >= 0) { _aProperty = value; } } }
Eşzamansız programlama için kullanılır. A
Future, gelecekte bir zamanda mevcut olacak potansiyel bir değeri (veya hatayı) temsil eder.
A alıcıları,
Futurekullanılabilir olduğunda değeri veya hatayı işleyen geri aramaları kaydedebilir.
the 'async’Ve anahtar kelimeler ne
'await’içindir?
Bunlar, eşzamansız programlamanın kullanımını ve okunmasını çok daha kolay hale getiren anahtar sözcüklerdir.
Nesneler
thenüzerine geri arama yazmak yerine bunları kullanabiliriz
Future.
Dosyaları, sınıfları, özellikleri, vb. Doğru şekilde nasıl adlandıracağınızın farkında olmanız gerekir. Sen okumalı bu ve kadar olabildiğince hatırlıyorum.
Dart bunu yerel olarak sağlar ve dart: convert library'de mevcuttur . Orada
jsonDecodeve
jsonEncodeyöntemleri kullanılabilir.
Yayılma operatörü Dart 2.3'e eklendi. Bir koleksiyona birden çok öğe eklemek için kısa bir yol sağlar. Ayrıca
null-aware, öğeleri koşullu olarak ekleyen bir yayılma operatörü de vardır (yalnızca dizi değilse
nil).
Bu, röportajda size sorulabilecek birkaç soru. Daha genel sorular bekleyebilirsiniz. Küçük bir konumsa, akış kontrol ifadeleri (eğer-değilse, döngüler, anahtarlar, iddialar vb.) Veya hatta "Sınıf nedir?" Gibi en temel sorularla ilgili herhangi bir şey olabilir.
Aralık 2019.
Flutter'daki her şey bir widget'tır, ancak bir widget tam olarak nedir? Bir eklendi , bir kullanıcı arabirimi elemanıdır.
Durum bilgisi olmayan gereçlerin durumu yalnızca bir kez oluşturulur - bu nedenle,
buildyöntem de yalnızca bir kez çağrılır.
Durum bilgili pencere öğelerinin durumları açıkça oluşturulmuştur ve pencere aracının kullanım ömrü boyunca değiştirilebilir.
createState()-
StatefulWidgeta'da hemen çağrılan ve
Statepencere öğesi için bir nesne döndürmesi gereken bir yöntem
initState()-
Statewidget oluşturulduktan sonra nesnede çağrılan ilk yöntem
didChangeDependencies()-
initState()Widget ilk oluşturulduğunda hemen çağrılır
build()-
StatelessWidget. Hemen sonra denir
didChangeDependencies(). Kullanıcı arabiriminin işlenmesi gereken her seferde çağrılır ve bir pencere öğesinin ağacını döndürür.
didUpdateWidget()- ana widget değiştiğinde ve kullanıcı arayüzünü yeniden çizmesi gerektiğinde çağrılır
deactivate()-
dispose()bu nesne ağaçtan kaldırıldığında daha önce çağrılır
dispose()- tüm parçacığı ve durumunu serbest bırakırken çağrılır
Flutter projenizin tüm bağımlılıklarını (isteğe bağlı ve gerekli - örneğin eklentiler, Dart sürümü, yazı tipi, resimler) sağlayabileceğiniz bir dosyadır. Aynı zamanda projenin adını ve açıklamasını yapılandırdığınız bir yerdir.
Çalışırken yeniden yükleme özelliği, kodu çalışan bir uygulamaya hızlı bir şekilde yeniden yüklemenize olanak tanır. Sıcak yeniden başlatma, uygulamadaki tüm durumları yok edip yeniden oluşturduğundan (ve tüm bileşen ağacı tamamen yeniden oluşturulduğundan), sıcak yeniden başlatmadan daha az zaman alır.
Bu, yalnızca verileri tutan özel bir tür widget - kullanıcı arayüzünü tanımlamaz. Bir alt ağacın kökünde bir bağlam tanımlar ve bu bağlamı ağaçtaki her parçacığa verimli bir şekilde sağlayabilir.
Tüm konsepti anlamak için bu videoyu izleyin - bence orada iyi açıklanmış.
Eklentiler aracılığıyla. Herhangi bir yerel kodu çağırmak için, yerel kod ile Flutter arasında bir köprü oluşturmamız gerekir.
Bu, widget'larımızı, görünümün çubuklarla ve durum çubukları gibi diğer içeriklerle engellenmemiş bir kısmına yerleştirmeyi kolaylaştıran bir widget.
Hayır, web uygulamaları oluşturmak da mümkündür - ancak hala beta sürümündedir ve henüz resmi olarak yayınlanmamıştır.
Flutter'da gezinme oluşturmanın üç yolu vardır:
MaterialPageRoute(veya benzeri)
routesharitayı
MaterialAppardından adını kullanarak itin
onGenerateRoutegeri arama uygulaması
MaterialApp
Gümüş diye adlandırılmadıklarını zaten fark ettiyseniz, iyi bir başlangıç yaptınız . Bir şerit , kaydırılabilir bir alanın bir kısmıdır. Özel kaydırma efektleri elde etmek için şeritleri kullanabilirsiniz. Bu, örneğin, bir
ListViewve
GridViewbirlikte kaydırabileceğiniz anlamına gelir . Basit bir parşömene benzer bir şey yapmak da mümkün olabilir, ancak bu gibi durumlarda şerit çok daha iyi performans gösteriyor.
SliverToBoxAdapterŞeritlerin çocuğu olarak kullanılabilecek bir kap içine yerleştirebiliriz .
Ara doldurma animasyonları , ara için kısadır . Ara animasyonlarda, animasyonun başlangıcını ve sonunu tanımlarız ve çerçevenin kendisi, widget'ı değerleri yerine getirmeye nasıl geçireceğini hesaplar.
Yani tamamen size kalmış. Flutter'da bir uygulama oluşturduysanız en az birini bilmelisiniz. Değilse, onlar hakkında biraz bilgi edinmek isteyebilirsiniz - örneğin, BLoC, Redux.
Bir anahtar aletler, elemanlar ve semantik düğümleri için kullanılabilecek bir tanımlayıcıdır. Örneğin, pencere öğeleri ağacınızda hareket ederken bir durumu korumak istiyorsanız, tuşlar yararlı olabilir. Yani, a üzerinde tuşu kullanırsanız,
ScrollViewbir koleksiyonu değiştirirken kaydırma konumunu koruyabilirsiniz.
: Sen uygulaması çalışıyorsa hangi modda kontrol etmek Vakfı paketinden sabitleri kullanabilirsiniz
kReleaseMode,
kProfileModeya da
kDebugMode.
Ayıklama modu uygulamada hata gidermek için kullanılmaktadır. Bununla birlikte, profil modunda , yalnızca bazı hata ayıklama yetenekleri korunur - yalnızca uygulamanızın performansının profilini çıkarmak için yeterlidir.
'double.infinity’?
Widget'ın bir ebeveyn kadar büyük olması gerektiğini belirtmek istediğinizde kullanılır.
Platform.isIOSdan
dart:iopaketin
veya
if(Theme.of(context).platform == TargetPlatform.iOS)
Ardından, buna bağlı olarak widget'lar oluşturun / yapılandırın.
En kolay yol, HTTP paketini (
import ‘package:http/http.dart’ as http;) kullanmaktır.
Bu, talepte bulunmak için uygun bir yönteme sahiptir:
http.get(‘https://jsonplaceholder.typicode.com/albums/1');
const Color(0xFF000000);
Başlangıç değerine sahip bir kontrolör ayarlamamız gerekiyor -
TextEditingController(text: “Initial Text”).
FocusScope.of(context).unfocus();
Ya öğesinin yüksekliğini açıkça ayarlamalıyız, üzerindeki özelliği
ListViewkullanmalıyız ya da bir widget ile sarmalamalıyız .
shrinkWrap
ListView
ListView
Expanded
Hangisini kullanacağınız tasarımınıza bağlıdır.
Bu, temanın bir örneğinin ebeveyn olarak eksik olduğu anlamına gelir.
Evet, flutter_svg eklentisi buna izin veriyor.
Bir URL'den görüntüleri göstermek için yapıcıyı kullanabiliriz
Image.network().
'ScrollView'?
Bir denetleyici oluşturmanız
ScrollControllerve bunu
ScrollView. Ardından,
animateTokaydırmak istediğimizde denetleyicide yöntemi (veya başka bir benzer yöntemi) çağırabiliriz .
Bunun için
WillPopScopewidget'ı kullanabiliriz .
the 'reverse‘’Bir pencere öğesindeki özelliğin amacı nedir
'ListView’?
Listedeki öğeleri ters sırayla gösterir. Diziyi öğelerle de tersine çevirebiliriz, ancak bu kodun daha temiz olmasını sağlar.
MediaQuery.of(context).size
Bu
flutter pub upgrade.
Bu, aslında kullanmadığımız tüm kodların (ölü kod) derlenmeyeceği anlamına gelir. Bu sayede, kullanılmayan tüm kodları uygulamalarımıza dahil etmeden büyük kitaplıkları kullanabiliriz.
Flutter uygulaması yerel bir ARM ve x86 kitaplıklarında derlenir, bu nedenle teknik olarak yereldir.
Her platform (iOS ve Android) hakkında temel bir anlayışa sahip olmanın ve platforma özgü bazı soruları bilmenin de önemli olduğunu düşünüyorum. Örneğin:
AndroidManifest.xmldosya?
Info.plistdosya?
ApplicationId?
Flutter, Mayıs 2017'den beri piyasada olmasına ve hala oldukça yeni olmasına rağmen, işverenler zaten bu beceriye sahip geliştiricileri işe alıyor.
Mobil platformlardan herhangi biri (iOS, Android veya daha iyisi, her ikisini de en azından temel düzeyde biliyorsanız) hakkında bir geçmişiniz ve bilginiz varsa, çok uygun olabilir ve muhtemelen çok iyi performans göstereceksiniz. Flutter geliştiricisi olarak kariyerinizin en başında.
Bu ilk işinizse, hem Android hem de iOS sistemlerinde belirli şeyleri nasıl yapacağınızı bilmeniz gerekeceğinden, yetişmeniz gereken çok şey olabilir. Aralarında bilinmesi iyi olan bazı farklılıklar da vardır.
Bir iOS Geliştiricisi iseniz ve SwiftUI'yi denediyseniz ve sevdiyseniz - her iki çerçeve de bildirim temelli programlama kavramını kullandığı için kendinizi evinizde hissedeceksiniz.
Dart çok daha uzun süredir burada. Nesne yönelimli bir programlama dilidir, bu yüzden zaten başka birini biliyorsanız, alışmakta çok fazla sorun yaşamazsınız. Pek çok çerçeve (örneğin, Rx) de mevcuttur, bu nedenle hangi mimariyle gitmeye karar verdiğinize bağlı olarak, Dart'ta gerçekten iyi yazabilirsiniz.
Umarım makaleyi beğenmişsinizdir ve umarım Dart ve Flutter öğrenmenize yardımcı olur. Belki sonunda hayalinizdeki işi alırsınız, eğer aradığınız buysa!
Okuduğunuz için teşekkürler ve mutlu kodlamalar!
Bu yazıda, yazılım sektöründe çalışırken edindiğim bazı deneyimleri ve bu durumların üniversitede yaşadıklarımdan nasıl farklılaştığını sizlerle paylaşacağım. Programlama öğrenmek için var olan sayısız yoldan, üniversite dereceleri genellikle toplumda çok yüksek puan alır ve saygı görür ve birçok insanın aldığı bir yoldur.
Teknoloji endüstrisinde kadın ve erkek arasında bir cinsiyet farkı olduğu iyi bilinmektedir. Neden böyle olduğunu analiz etmeye çalışmak yerine, teknoloji endüstrisinin bir parçası olmaya hevesli biri olarak, verileri araştırmak ve teknolojideki kadınlar hakkında daha fazla bilgi edinmek ilginç olurdu diye düşünüyorum.
Pragmatik Programcı ilk olarak 1999'da yayınlandı ve o zamandan beri tüm zamanların en iyi programlama kitabı seçildi. Yazarlar Andy Hunt ve David Thomas, Agile Manifesto'nun orijinal yazarları arasındaydı ve bazı ciddi referanslara sahipler.
Saldırganların herkese açık GraphQL arabiriminizi kullanarak sitenizi nasıl kazıyabileceğini veya hizmet reddi saldırıları gerçekleştirebileceğini öğrenin. Bunu dört yoldan biriyle yapabilirler: yürütmek için tek bir büyük sorguyu dikkatlice oluşturarak, ilgili verileri getirebilecek çok sayıda paralel sorgu yazarak, arka arkaya çok sayıda sorgu göndermek için toplu istekleri kullanarak ve son olarak çok sayıda istek göndererek.
Teknoloji endüstrisindeki bir pozisyon için mülakat yaparken, herhangi bir teklif değerlendirilmeden önce genellikle en az üç tur mülakattan geçeceksiniz. Mermiler genellikle şuna benzer: Eğer öyle düşünüyorsan, yanılıyorsun.
Harika geliştiriciler yapan teknik olmayan şeyler Bir süredir bu makaleyi yazmayı erteliyorum - yazmak için hiç nitelikli hissetmedim. Bugün onu yazma zamanının geldiğini düşündüm.
Al Pacino, 'Ve Herkes İçin Adalet' doruk noktasını yeniden yazdığını söyleyerek Norman Jewison'ı şaşırttı. Ama Pacino'nun nedenleri vardı.
Kelly Dodd, 'RHOC' Sezon 16'dan çıkarıldı ve Heather Dubrow portakalı için geri döndüğü için geri dönmeyecek.
Kevin Hart kısa süre önce iptal kültürüne karşı çıktı ve mükemmel olması beklenen tek kişinin halk figürleri olduğunu belirtti.
'Sopranos'un sonlarında, yazarlar Tony Soprano için alternatif bir kimlik oluştururken Alfred Hitchcock etkisine gittiler.
O mükemmel kahve için dünyayı mı arıyorsunuz? Belki de kendi kahve çekirdeklerinizi kavurmanın güzel sanatlarını ve bilimini öğrenmenin yolu budur.
Yaratılış'ta sadece kısa bir kez ortaya çıkıyor, ancak İsa Mesih'in habercisi olarak görülüyor. O gerçekte neydi ve İsa ile nasıl ilişkilendirildi?
Mississippi'de fakir bir ortakçı ailesinde dünyaya gelen Fannie Lou Hamer, Şiddetsiz Öğrenci Koordinasyon Komitesi (SNCC) için saha sekreteri ve sivil ve oy hakları için yorulmak bilmeyen bir savaşçı oldu.
Modern uygarlık giderek yarı iletkenlere bağımlı hale geliyor, ancak tedarik zinciri COVID-19 pandemisi, kuraklıklar ve talep artarken diğer sorunlar tarafından kesintiye uğradı.
Getireceği yükü bir düşünün. MLB sezonu ilerledikçe, Sıcak Soba ısınıyor.
Xavien Howard Xavien Howard'ın NFL'deki en iyi köşe oyuncularından biri olduğuna dair çok az soru var. Geçen sezon 10 - TEN - müdahalesi vardı.
Spor salonunda ne yapacağınız konusunda çelişkili tavsiyeler bulmak için uzağa gitmenize gerek yok. Bazı insanlar size belirli egzersizleri hiç yapmamanızı söyleyecektir; diğerleri, dirseklerinizin bir presin tepesinde ne kadar düz olması gerektiği gibi ayrıntıları tartışacaklar.
Bütün bebekler ağlar. Ama bazı bebekler çok ağlar.
Liberty County Şerif Ofisi'ne göre, 37 yaşındaki Robert Eugene Hoffpauir tutuklandı ve 60 yaşındaki Roman Rodriguez'i öldürmekle suçlandı.
Leona Lewis Instagram'da, "İnsanlar özür dilediğinde (Chrissy) ve eylemleri için samimi bir pişmanlık ve rehabilitasyon gösterdiğinde, onları kucaklamalıyız ve düştüklerinde onları tekmelemeye çalışmamalıyız" dedi.
Kelsey Grammer, başrolü paylaştığı Paris Jackson ile ilk kez daha gençken tanıştı ve babasıyla Michael Jackson arasında çok güzel bir ana tanık oldu.
54 yaşındaki Jeff Tremaine, eski televizyon yıldızının kendisine ve ailesine ölüm tehditleri göndermesinin ardından 41 yaşındaki Bam Margera hakkında uzaklaştırma emri başvurusunda bulundu.