TSM - Hai să vorbim despre Flutter

Alexandra Damaschin - Technology Consultant @ AboutYou Tech


Lumea tehnologiei se schimbă constant. Am fost martorii ascensiunii și decăderii multor tehnologii. Pentru acest articol am decis să scriem despre una din cele mai importante tehnologii în dezvoltarea soluțiilor mobile.

Introducere în Flutter

Flutter este o platformă creată de Google pentru dezvoltarea aplicațiilor mobile. Aceasta permite programatorilor să dezvolte aplicații de tip web, desktop și cross-platform ce rulează pe dispozitive Android și iOS, având un singur codebase și un singur limbaj de programare. La AboutYou folosim Flutter pentru Android și iOS.

Obiectivul nostru este de a permite programatorilor să livreze aplicații extrem de performante care se comportă natural pe platforme multiple. Se oferă suport pentru comportamentul de scrolling, pentru tipografie, icoane și nu numai.

Spre deosebire de alte soluții populare, Flutter are un SDK, un framework și o librărie UI bazată pe widgeturi. Acestea sunt elementele de construcție pentru interfața grafică a aplicațiilor Flutter. Oferă o gamă largă de widgeturi predefinite, toate similare cu cele native, spre exemplu casete de text, butoane sau elemente de navigație. Dacă doresc, programatorii pot customiza sau crea elemente.

Flutter se realizează cu Dart, un limbaj de programare optimizat pentru programare rapidă pe orice platformă. Dart vi se va părea familiar dacă ați mai folosit limbaje precum Java, Kotlin, Swift sau TypeScript. Vă va ajuta experiența cu orice limbaj orientat spre obiecte, dar și cei fără experiență în programare pot construi aplicații Flutter, deoarece vor putea învăța Dart rapid. Merită să încercați tutorialul Dart tour.

Beneficiile Flutter

Flutter are foarte multe beneficii, dar noi am dori să vă prezentăm favoritele noastre după ce am lucrat efectiv cu Flutter în producție pentru o aplicație ce are mai mult de 1.8k de utilizatori.

Faptul că avem un singur codebase pentru toate aplicațiile este cel mai bun lucru la Flutter, fapt care ne ajută să economisim mult timp. Scriem cod în Dart care are performanță bună și care oferă o experiență optimă de dezvoltare. Ne face să simțim că programarea chiar poate fi o experiență plăcută.

Pe lângă faptul că timpul este redus, utilizarea aceluiași codebase presupune costuri reduse pentru client. Aplicația ajunge pe piață mai repede și va fi mai ieftin de construit decât aplicația nativă.

Un alt aspect ce grăbește procesul de dezvoltare este funcționalitatea hot reload (reîncărcare rapidă) care permite programatorilor să schimbe codul în simulatoare, emulatoare sau dispozitive reale, și ulterior să vadă rezultatele în timp real.

Codul modificat se reîncarcă în mai puțin de o secundă, în timp ce aplicația rulează, nefiind necesară, o restartare.

Frameworkul beneficiază de suportul comunității, fapt reflectat în evoluția sa. Acest proiect are un plan de dezvoltare ambițios și, uitându-ne la progresul pe care l-a avut, așteptăm ca multe lucruri bune să se întâmple de acum înainte, toate cu un impact mare în tehnologie.

https://insights.stackoverflow.com/trends?tags=flutter%2Creact-native

Dezavantajele Flutter

Nu vă vom minți. Nu vom spune că Flutter este cel mai bun în toate situațiile. Desigur că sunt studii de caz unde Flutter va crea reale probleme. Înainte de a alege o tehnologie, gândiți-vă la studiile de caz asociate proiectului și decideți doar în baza acestor informații.

Aveți nevoie de o tehnologie care să vă permită dezvoltarea de aplicații performante, de top, cu o conexiune OS embedded între aplicație și dispozitiv? În acest caz, o tehnologie nativă va fi o alegere mai bună decât Flutter. Când ne gândim la aplicații mobile cu accent special pe funcționalități native, atunci Flutter nu vă poate ajuta. Aveți în plan aplicații sofisticate IoT care să se conecteze la TV sau Wallets? O tehnologie nativă este alegerea care ne va face viața mai ușoară și care va oferi integrarea între aplicația voastră și alte dispozitive.

De ce au ales programatorii noștri Flutter?

Aceasta e povestea pe scurt a modului în care am trecut de la dezvoltarea Android sau iOS la Flutter. Acum câțiva ani, am creat primele noastre aplicații Android sau iOS. Am lucrat pentru companii care se axau pe dezvoltare mobilă — iOS și Android. La acea vreme, cea mai bună alegere era dezvoltarea nativă.

Totuși, dezvoltarea mobilă s-a schimbat mult pe parcursul anilor. Sunt multe limbaje, tehnologii și arhitecturi. Am decis să explorăm alte tehnologii pentru a le analiza potențialul.

După o serie de cercetări și după ce am început să lucrăm cu Flutter, am descoperit că este o plăcere să scriem cod în Dart. Am învățat foarte repede ce este de făcut, iar lucrurile au funcționat pur și simplu.

Ne-a plăcut atât de mult, încât am avut încredere deplină în viziunea și planurile lor pentru această tehnologie.

Acum, câțiva ani mai târziu, ne bucurăm că am făcut acest pas și am intuit că va avea un viitor strălucit. Lucrurile s-au îmbunătățit semnificativ în ultimii ani și credem că vor avea reușite și mai mari.

De cât timp aveți nevoie pentru a reconstrui aplicația voastră mobilă cu Flutter?

Există o serie de beneficii dacă decideți să reconstruiți o aplicație nativă cu Flutter.

O problem comună pentru multe companii și start-upuri ține de procesele similare de dezvoltare. În majoritatea timpului, programatorii Android și iOS lucrează independent, ceea ce atrage o complexitate mare și inutilă a codului, dar și efort sporit de mentenanță. Mulți au încercat să rezolve această problemă, dar majoritatea eforturilor au fost contra-productive.

Pentru majoritatea echipelor, beneficiile generale ale dezvoltării cu un framework cross-platform includ timpi mai rapizi de dezvoltare și cheltuieli mai mici.

Dacă aveți o aplicație mare, veți dori să nu așteptați până se rescrie toată aplicația în Flutter, înainte de a o lansa. Poate că are rost să integrați Flutter pages în aplicația voastră curentă în timp și să faceți release la actualizări pe parcurs.

Pentru cei care doresc să construiască un MVP (produs minim viabil) sau pentru start-upuri, Flutter este o alegere bună, deoarece este gratuit și ușor de folosit. Programatorii pot crea o aplicație de calitate înaltă fără a investi foarte mulți bani și foarte mult timp, dar acestea depind și de complexitatea aplicației pe care o doriți. La About You, am avut nevoie de șase luni pentru a reconstrui și a optimiza aplicația folosind Flutter. În total, aplicația noastră era live pentru toți utilizatorii după nouă luni. Acum suntem mulțumiți că aplicația noastră are același UI și UX pentru toate dispozitivele.

Puteți descărca aplicația noastră About You de pe App Store sau Google Play Store pentru a o încerca.

Este ușoară testarea cu Flutter?

Testarea este un aspect important când dezvoltăm o aplicație sau o funcționalitate nouă. Implementând testarea, vom dobândi mai multă încredere în capacitatea noastră de a lansa o soluție în producție, deoarece ne putem asigura din timp că aplicația pe care am dezvoltat-o funcționează conform așteptărilor și are foarte puține defecte.

Flutter oferă mai multe tipuri de teste ce pot fi folosite pentru a ne asigura că vom livra un comportament corect. Avem teste pe componente (unit tests), teste de integrare (integration tests), teste pe elementele widget (widget tests) și teste de aur (golden tests).

În această secțiune, vom detalia principiile testelor de aur.

Ideea unui test de aur este simplă. Începem cu doi pași. La primul pas generăm imaginea model. La pasul doi comparăm ecranul sau widgetul cu imaginea model.

Puteți adapta testele pentru a testa vizual componente precum liste, diagrame sau widgeturi complexe ce ar fi, altfel, foarte greu de testat.

Flutter oferă suport nativ pentru testele de aur. Instrumentele care facilitează testarea de aur sunt fantastice, deoarece este foarte simplu să scrieți teste. De asemenea, sintaxa este asemănătoare celei folosite pentru testele elementelor widget obișnuite. Dezavantajul este că acestea pot deveni, foarte repede, greu de citit și întreținut pe măsură ce creați mai multe variații ale aceluiași test.

În plus, sunt câteva probleme cu redarea fontului când se trece de la o platformă la alta, deci dacă ați lucrat pe un Mac testele nu vor merge pe o mașină CI Linux.

De ce consideră colegii noștri că Flutter este o soluție bună pentru aplicațiile din producție?

Este o soluție bună, deoarece acordă o importanță deosebită timpului de compilare și performanței. Componenta SDK s-a maturizat în timp. În acest moment, oferă foarte multe opțiuni care fuseseră disponibile doar în varianta nativă. Toate actualizările pe care le aduc SDK-ului lor sunt sigure, fără schimbări radicale.

Desigur că trebuie să înțelegeți care este scopul aplicației voastre și să analizați dacă aveți nevoie de suport low level. Cu toate acestea, pentru aplicații normale, precum AboutYou, Flutter a fost și este cea mai bună alegere pentru a dezvolta funcționalități rapid și pentru a lansa aplicația pe toate dispozitivele.

Unde vedem Flutter în viitor?

Am fost martorii ascensiunii sale și observăm că se află în plină maturizare și optimizare a variantei Flutter web. Echipa Flutter lucrează la suport pentru desktop care, când va fi stabil, va oferi un SDK universal pentru dezvoltarea de componente UI.

Este pe cale de a cuceri componenta web frontend, deci are șanse reale de a deveni prima alegere când trebuie să optăm pentru o tehnologie care să ne ajute să realizăm toată partea front end fie că vorbim de web, aplicații mobile cross platform sau desktop.

I-am întrebat pe colegii noștri: "Dacă ați construi o aplicație mobilă de la zero, ce tehnologii ați alege și de ce?"

Răspunsul: Toți ar folosi Flutter, deoarece este o soluție bună pentru a ajunge la platforme multiple. E nevoie de mai puțini programatori pentru a livra produsele mai repede către clienți. Mai mult, recomandăm folosirea Firebase (Flutter Fire) și Azure Functions, acesta fiind un toolkit care va face ca ideea voastră să devină realitate. Rezultatul va fi o aplicație nouă pe care o veți livra rapid și care va avea impact în lume.