Šta je to Flutter? Razvoj mobilnih aplikacija za Android, iOS i još mnogo toga

Flutter vam omogućava da iz jedne baze koda napravite kompajlirane, višeplatformske mobilne, desktop i veb aplikacije. Evo kratkog pogleda na Flutter i njegov programski jezik Dart koji se lako koristi.
Autor: Martin Heller


Postojalo je vreme kada ste morali da birate između kreiranja univerzalnih mobilnih aplikacija i izvornih aplikacija. Univerzalne aplikacije su koristile veb tehnologije kao što su HTML i JavaScript, koje bi se često loše pokazale na mobilnim uređajima. Izvorne aplikacije su imale bolje rezultate jer su se pisale zasebno za svaku platformu koju ste želeli da podržite, ali su bile skupe i zahtevale su specijalizovani razvojni tim za svaku platformu.
Flutter, radni okvir otvorenog koda koji je razvio Google, je to promenio. Danas programeri imaju više opcija za kreiranje brzih mobilnih aplikacija koje rade na više platformi, uključujući Ionic, React Native i Xamarin. Flutter i njegov ugrađeni programski jezik, Dart, ostaju popularni i široko korišćeni.
Flutter 3, objavljen ranije ove godine, dodaje podršku za macOS i Linux desktop aplikacije, pored originalnih Android, iOS, veb i Windows ciljeva. Izdanje takođe uključuje poboljšanja performansi kako bi se popravile primetne pauze korisničkog interfejsa.


Razvoj na više platformi uz Flutter 3


Flutter je radni okvir otvorenog koda razvijen u Googlu koji vam omogućava da iz jedne baze koda izgradite izvorno kompajlirane, multiplatformske aplikacije. Flutter 3 podržava šest platformskih ciljeva: Android, iOS, Windows, macOS, Linux i veb aplikacije.
Flutter vidžeti se prave u modernom radnom okviru koji je inspirisan React-om. Kao što je prikazano na slici 1 u nastavku, najčešće korišćeni vidžeti i rasporedi su tekstualni vidžeti, Flexbox rasporedi redova i kolona, rasporedi apsolutnog pozicioniranja steka, pozicionirani vidžeti i kontejnerski vidžeti.
Recimo da pravite aplikaciju za više platformi koja počinje sa Flutter vidžetom MaterialApp. Ovaj vidžet pravi razne druge korisne vidžete u korenu vaše aplikacije, uključujući navigator. Navigator upravlja gomilom vidžeta identifikovanih pomoću nizova, takođe u Flutteru poznatih kao rute. Navigator vam omogućava neometani prelaz među ekranima aplikacije.
Da biste kreirali dizajn usredsređen na iOS, pogledajte paket komponenti Cupertino. Flutter tim preporučuje da se u aplikacijama koje su samo za iOS koriste samo Cupertino komponente; za višeplatformske aplikacije, razmislite o korišćenju drugog skupa vidžeta; na primer, komplet Material Design.
Prva tri snimka ekrana koji slede prikazuju vidžete bez stanja, rukovanje pokretima i vidžete sa stanjem. Vredi proći kroz ceo vodič za razvoj Flutter-a, počevši od uvoda u vidžete koji smo ovde započeli. Takođe je vredno isprobati DartPad uzorke i pogledati galeriju Flutter, kao i isprobati Flutter laboratoriju kodova.
Osim vidžeta i rasporeda, Flutter ima navigaciju i rutiranje, animacije, akcije i namere, prečice, upravljanje stanjem, umrežavanje i HTTP, JSON serijalizaciju i Firebase integraciju.
Slika 1 prikazuje primer vidžeta Flutter Material koji koristi DartPad u veb pretraživaču. Dart kôd je levo, a veb ekran je desno.

Slika 2 prikazuje primer rukovanja pokretima u Flutter-u. Metod onTap vidžeta GestureDetector bez stanja povezanog sa dugmetom Engage pokreće se kada se dugme pritisne.

Slika 3 je primer vidžeta koji sadrži stanje. Pritiskom na ElevatedButton vidžet Increment pokreće se njegov metod onPressed, koji poziva privatnu funkciju _increment. Ona poziva setState() da kaže Flutteru da se nešto promenilo i povećava promenljivu _counter. Zatim, radni okvir poziva metod build() da ponovo nacrta dugme i tekst.

Fluter i Dart
Flutter funkcioniše pomoću jezika Dart, jezika optimizovanog za brze aplikacije na bilo kojoj platformi. Dart prilično liči na jezike Java, Kotlin, Swift i TypeScript (pogledajte sliku 4 za poređenje). Ako razumete bilo koji objektno orijentisani jezik, moći ćete brzo da shvatite Dart. Vredi proći barem kroz Dart turneju.
Sasvim osnovni Dart program može da bude:
// Definisanje funkcije.
void printInteger(int aNumber) {
print(‘The number is $aNumber.’); // Piše na konsolu.
}

// Ovde aplikacija počinje da se izvršava.
void main() {
var number = 42; // Deklarisanje i inicijalizacija promenljive.
printInteger(number); // Pozivanje funkcije.
}
Dart je srtogo tipiziran, ali anotacije tipa su opcione jer Dart može da zaključuje tipove. Preporučeni stil je da se koristi var i zaključivanja tipa za lokalne promenljive, a strogo tipiziranje za funkcije i javne promenljive. Za razliku od Jave, Dart nema ključne reči public, protected i private. Ako identifikator počinje donjom crtom (_), on je privatan za njegovu biblioteku.
Dart može da kompajlira u ARM i x64 mašinski kôd za mobilne, desktop i pozadinske aplikacije, kao i u JavaScript za veb. U režimu za otklanjanje grešaka, Dart vam omogućava da brzo učitate pokrenute aplikacije nakon što sačuvate promene u izvornom kodu. Dart ima i JIT kompajler i AOT kompajler.
Dart ima opcionu nultu bezbednost. Ako je vaše minimalno SDK ograničenje (u fajlu pubspec.yaml vaše aplikacije) najmanje 2.12.0, onda ste se opredelili za nultu bezbednost. U tom slučaju, samo promenljive čiji tip ima znak pitanja (npr. „int?“) smeju da sadrže nule.

Funkcije i nadogradnje za Flutter 3
U postu na blogu, Tim Sneath, Google-ov menadžer proizvoda za Flutter i Dart, rezimirao je nove funkcije u Flutter-u 3, napominjući da „Flutter 3 upotpunjuje našu mapu puta od orijentisanog na mobilne uređaje do radnog okvira za više platformi“.
Flutter 3 proširuje dostupne ciljeve platformi kako bi uključio podršku za macOS i Linux desktop aplikacije, u potpunosti integriše Flutter sa Firebase-om, dodaje izvornu razvojnu podršku za Apple Silicon i uključuje brojne karakteristike produktivnosti i performansi.
Flutter Showcase i Flutter Gallery
Flutter Showcase je u suštini zbirka studija slučaja o proizvodnim aplikacijama napravljenim pomoću Flutter-a. Najkorisniji je za menadžere koji razmatraju Flutter.
Galerija Flutter sadrži kolekciju vidžeta, ponašanja i vinjeta koje pokazuju šta Flutter radi i kako se ponaša, a najkorisnija je za programere i dizajnere. Možete da pogledate Galeriju na vebu ili da je pokrenete lokalno na bilo kojoj od podržanih platformi koristeći repozitorijum Flutter galerije.
Instaliranje Flutter-a
Flutter možete da instalirate na Windows, macOS, Linux ili Chrome OS. Kako ćete tačno instalirati zavisi od sistema. Imate izbor da preuzmete .zip fajl ili tarball specifičan za sistem i da ga raspakujete ili da klonirate repozitorijum. Zatim ćete morati da dodate flutter alat na svoju putanju i pokrenete flutter doctor. Ovde su rezultati flutter doctora.
Running „flutter pub get“ in flutter_tools… 5.1s
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.0.1, on Mac OS X 10.15.7 19H1922 darwin-x64,
locale en-US)
[✗] Android toolchain – develop for Android devices
✗ Unable to locate Android SDK.
Install Android Studio from:
https://developer.android.com/studio/index.html
On first launch it will assist you in installing the Android SDK
components.
(or visit https://flutter.dev/docs/get-started/install/macos#android-setup
for detailed instructions).
If the Android SDK has been installed to a custom location, please use
flutter config --android-sdk to update to that location.

[!] Xcode – develop for iOS and macOS (Xcode 12.4)
✗ Flutter requires Xcode 13 or higher.
Download the latest version or update via the Mac App Store.
✗ CocoaPods not installed.
CocoaPods is used to retrieve the iOS and macOS platform side’s plugin
code that responds to your plugin usage on the Dart side.
Without CocoaPods, plugins will not work on iOS or macOS.
For more info, see https://flutter.dev/platform-plugins
To install see
https://guides.cocoapods.org/using/getting-started.html#installation for
instructions.
[✓] Chrome – develop for the web
[!] Android Studio (not installed)
[✓] IntelliJ IDEA Ultimate Edition (version 2022.1.1)
[✓] IntelliJ IDEA Ultimate Edition (version 2022.1.1)
[✓] VS Code (version 1.67.1)
[✓] Connected device (2 available)
[✓] HTTP Host Availability
U izlazu možete videti da je moj Intel MacBook Pro prestar da bi podržao minimalnu verziju Xcode-a potrebnu za razvoj iOS-a i macOS-a. Flutter timu je za kreiranje univerzalnih Intel/M1 macOS binarnih fajlova potreban Xcode 13. Mogu da programiram za Android ako instaliram Android SDK alate i već mogu da programiram za veb. Dodavanje dodatka Flutter u Visual Studio Code trajalo je manje od jednog minuta. Ako se ikada ozbiljno pozabavim razvojem multiplatformskih aplikacija sa Flutter-om, moraću da nadogradim bar jedan od svojih Mac računara.
Zaključak
Flutter 3 je interesantan reper, koji nudi stabilnost na šest platformi, dok nastavlja da se fokusira na poboljšanja performansi. Za programere koji treba da kreiraju višeplatformske aplikacije, sada je možda pravi trenutak da razmotre Flutter.


Izvor: InfoWorld