Putere hibridă: Avantaje și beneficii Flutter
Publicat: 2022-03-11Flutter este o platformă hibridă de dezvoltare a aplicațiilor mobile de la Google, care a ajuns la 1.0 la sfârșitul anului 2018. Deși este un participant mai nou în lista cadrelor de dezvoltare hibride, ideile grozave din spatele acesteia au făcut-o să prindă rapid în rândul dezvoltatorilor.
Scopul meu în acest articol este să explorez aceste idei și să scriu despre experiențele mele cu Flutter și de ce cred că este viitorul dezvoltării de aplicații mobile hibride.
Chiar dacă pe piață există cadre de aplicații hibride mai vechi, există o listă tot mai mare de companii mari care aleg Flutter pentru aplicațiile lor mobile. În timp ce pagina de prezentare Flutter enumeră multe dintre acestea, iată câteva aplicații notabile care folosesc Flutter fie pentru întreaga aplicație, fie pentru o funcție semnificativă:
- Aplicația Google Ads
- Aplicația GrabMerchant de la GrabFood
- Aplicația Xianyu a Alibaba Group, care are peste 50 de milioane de descărcări
- Nubank
- Aplicația eBay Motors
Deși cadrul Flutter este destul de capabil, este încă relativ nou. De dragul echilibrului, voi discuta și despre câteva limitări de care ar trebui să fii conștient înainte de a te angaja în Flutter.
Speranța mea este că, după ce ați citit acest articol, aveți o idee bună despre avantajele și dezavantajele Flutter și aveți suficiente informații pentru a decide dacă ar trebui să utilizați Flutter în următorul proiect de aplicație mobilă.
Avantajele flutter (din perspectivă de dezvoltare)
În calitate de dezvoltator, acesta este punctul de vedere cu care sunt cel mai familiar și despre care pot împărtăși cele mai multe informații.
Curba de învățare rapidă
Prima surpriză plăcută pe care Flutter o are pentru dezvoltatori este cât de repede este să înceapă. Este nevoie de mai puțin de 30 de minute pentru a finaliza procesul de instalare și pentru a avea un mediu de dezvoltare de lucru configurat. De acolo, sunteți gata să vă creați prima aplicație Flutter.
Integrarea editorului popular
Flutter are, de asemenea, integrări excelente de editor. Eu personal folosesc Android Studio, dar există instrucțiuni disponibile pentru a configura IntelliJ, VSCode sau Emacs.
Proces de dezvoltare curată
În comparație cu experiența mea anterioară cu cadrele de aplicații hibride, procesul de dezvoltare pare și mai curat . De exemplu, când am folosit WebViews pentru a afișa liste cu multe elemente (în jur de 100 sau cam așa ceva), a trebuit să mă ocup de utilizarea ridicată a procesorului, mai ales când utilizatorul derula lista. Le-am rezolvat folosind elemente de cadru ionic create special pentru asta. În Flutter, există o modalitate acceptată de afișare a listelor, ListView
, care are o performanță uimitoare imediată.
Reîncărcare live
Un alt lucru care m-a surprins plăcut a fost funcționalitatea de reîncărcare live. În calitate de dezvoltator full-stack, am fost obișnuit cu cadre precum BrowserWatch care oferă reîncărcare live în browser.
Dezvoltarea nativă nu are asta (dar cred că SwiftUI de la Apple face unele progrese în acest sens pentru dezvoltarea iOS). De obicei, dezvoltatorii Android și iOS trebuie să scrie cod și apoi să aștepte ca acesta să fie compilat și încărcat pe dispozitiv sau simulator înainte de a putea vedea modificările.
Flutter oferă (la React Native) un mecanism de reîncărcare live, în care codul aplicației este reîncărcat pe dispozitiv de îndată ce dezvoltatorii apăsează „salvare”. Acest lucru oferă feedback imediat, făcând dezvoltarea mult mai rapidă.
Performanţă
Performanța aplicației este o altă măsură în care Flutter apare încet ca câștigător.
Deoarece cadrul Flutter este în curs de dezvoltare activă, există multe locuri în care se pot face optimizări de performanță. Acest lucru este evident, de exemplu, în Flutter 1.17, care a crescut performanța de randare cu până la 50% pe dispozitivele iOS mai noi și a scăzut consumul de memorie cu până la 70% pentru anumite tipuri de sarcini de lucru.
Consecvență între platforme
Interfețele de utilizare cu adevărat consistente pe ambele platforme mobile sunt o altă caracteristică remarcabilă a Flutter. Deoarece Flutter folosește propriul motor de randare - mai multe despre asta mai târziu - interfața de utilizare este exact aceeași pe iOS și Android. Dezvoltatorii nu mai trebuie să se confrunte cu probleme de stil specifice platformei pentru ca totul să arate exact ca designul: acea garanție face parte din cadru.
Limbă, instrumente și extensie
Alte trei aspecte mai mici, dar totuși importante, cred că ar trebui menționate aici:
- Dart, limbajul în care sunt programate aplicațiile Flutter, este foarte simplu de început. Dar este și un limbaj destul de puternic, inițial destinat de Google să înlocuiască JavaScript. Dacă dezvoltatorii au vreo experiență cu JavaScript sau cu alte limbaje asemănătoare C, nu vor avea probleme să ridice Dart într-o zi sau două.
- Există un manager robust de pluginuri (pub) inclus în lanțul de instrumente implicit și o bibliotecă imensă de pluginuri disponibile prin depozitul de pluginuri pub.dev.
- Crearea de pluginuri pentru a profita de capacitățile platformei native este destul de ușoară, așa că dacă dezvoltatorii au nevoie de acces la o caracteristică a platformei pentru care nu există deja niciun plugin, codificarea unuia nu este prea dificilă.
Avantajele Flutter (Din perspectivă comercială)
Cel mai mare beneficiu Flutter la care se gândesc majoritatea companiilor este să angajeze o singură echipă atât pentru platforma iOS, cât și pentru Android. Cu toate acestea, un beneficiu mai important pe care multe companii îl trec cu vederea este timpul mai rapid de comercializare . Folosind avantajele de dezvoltare din secțiunea anterioară, o echipă de dezvoltare mai mică poate construi o aplicație frumoasă cu performanță nativă care oferă aceeași experiență utilizator pe ambele platforme mult mai rapid folosind Flutter.
Flutter permite dezvoltatorilor să construiască niște interfețe de utilizator cu adevărat frumoase . Aruncă o privire la o provocare recentă din partea Google și Lenovo de a construi o interfață de utilizare frumoasă a ceasului pentru Lenovo Smart Clock. Câștigătorul, Particle Clock de Mickel Andersson, nu este doar elegant, ci arată și cât de performante sunt animațiile în Flutter.
Pentru companiile care iau în considerare Flutter, dar care nu sunt sigure dacă este calea corectă, Flutter poate fi valorificat în mod incremental: aplicațiile mobile preexistente pot integra Flutter o singură parte la un moment dat. De fapt, așa încep majoritatea companiilor mari cu Flutter, prin construirea unei mici părți din aplicația lor existentă în Flutter și apoi înlocuind încet alte părți odată ce văd beneficiile.
Limitări de luat în considerare înainte de a utiliza Flutter
Pentru a fi corect, Flutter, fiind mai nou, nu este la fel de testat ca alte cadre hibride de aplicații mobile precum React Native – la urma urmei, acoperirea utilizatorilor finali ai React Native acoperă aplicațiile mobile de pe Facebook, Instagram, Skype și Discord.
Răspunsul implicit la „ar trebui să folosesc Flutter?” este, deocamdată, un da prudent . Acest lucru se datorează faptului că managerii de proiect trebuie în continuare să ia în considerare care, dacă există, funcții avansate de care vor avea nevoie și să se asigure că aceste funcții sunt disponibile în Flutter înainte de a se angaja să le folosească. În special, merită să ne întrebăm de ce biblioteci și plugin-uri ar putea avea nevoie o echipă pentru a construi o anumită aplicație. Fiind o intrare mai nouă în cadrele de aplicații mobile, Flutter nu are domeniul extins de biblioteci și pluginuri pe care le are React Native.
De exemplu, suportul camerei în Flutter nu este încă complet, cu zoom-ul și controlul blițului nefăcând încă parte din pluginul oficial al camerei. Pentru mine, asta nu a fost o problemă, deoarece am putut găsi un plugin terță parte atunci când aveam nevoie să integrez funcționalitatea foto/video într-o aplicație pe care o construiam.
Un alt plugin important pe care s-ar putea să-l ratezi este Google Maps. Nu există pluginuri Google Maps native pentru Dart și, deși există un plugin pentru a permite integrarea Google Maps în codul dvs. Flutter, acesta utilizează funcții Flutter (vizualizări ale platformei) care sunt încă în starea de previzualizare a dezvoltatorilor.
Încă un lucru care nu va afecta multe proiecte, dar de care ar trebui să fii conștient, este că, deocamdată, Flutter nu acceptă nicio capabilitate 3D. Echipa se concentrează doar pe 2D deocamdată. Dar cele mai multe aplicații nu folosesc nicio funcționalitate 3D, așa că acest lucru nu ar trebui să fie un deal-breaker pentru majoritatea dezvoltatorilor.
Câteva sfaturi din experiența mea cu Flutter
După ce am lansat trei aplicații Flutter în ultimii doi ani, am învățat o serie de lucruri despre care mi-aș fi dorit să mi se spună când am început. Le voi enumera aici în speranța că vă vor ajuta în călătoria dvs. de dezvoltare Flutter.
Flutter este foarte ușor de început. Am început cu un curs minunat despre App Brewery. Cu toate acestea, după finalizarea primelor module, am crezut că am învățat destul și am început să construiesc prima aplicație pe care am lansat-o.
Din cauza nerăbdării mele, am sărit peste o serie de module din acel curs care s-au dovedit a fi importante și a trebuit să învăț lecțiile acelor module pe calea grea făcând greșeli. Mai exact, aș fi făcut o treabă mult mai bună la prima mea utilizare a Flutter pentru dezvoltarea de aplicații dacă aș fi învățat câteva bune practici Flutter:
- Cum să modulez și să structurez codul aplicației mele Flutter.
- Cum funcționează managementul de stat.
- Cum să autentific utilizatorii și să urmăresc starea de autentificare în diferitele pagini ale aplicației mele Flutter.
- Cum să integrați notificările folosind pachetul Firebase Messaging.
Am ajuns să învăț toate aceste lucruri, dar mai întâi a trebuit să fac multe greșeli. Am rescris porțiuni semnificative din prima aplicație pe care am construit-o. Cu a doua mea aplicație Flutter, totuși, învățasem din greșelile mele și am ajuns să fac o treabă mai bună și mai rapidă.
Există multe resurse pe care le puteți găsi cu ușurință căutând pe Google pentru a afla despre conceptele pe care le-am enumerat mai sus. Puteți începe uitându-vă la linkurile de pe pagina Aflați mai multe de pe site-ul Flutter.
Un alt lucru pe care l-am găsit este că, din cauza cât de nou este Flutter, nu există un model pentru structurarea aplicației dvs. Venind dintr-o carieră de dezvoltare bazată în mare parte pe Django, sunt obișnuit să știu că MVC este modelul de utilizat în aplicațiile mele Django. iOS are, de asemenea, un câștigător clar în modelul MVVM pe care îl urmează. Android are setul său de linii directoare despre cum să arhitecți cel mai bine o aplicație.
Flutter nu are un astfel de model de arhitectură care să fi „învins” peste numeroasele posibilități. Acesta a fost ceva care mi-a dat o perioadă grea inițial. În cele din urmă, după ce am dezvoltat o serie de aplicații Flutter, cred că cel mai bine este să alegeți pur și simplu o arhitectură și să rămâneți cu ea.
Eu personal folosesc pachetul provider
atât ca injecție a dependenței, cât și ca cadru de management al schimbărilor. Aplicațiile mele Flutter sunt, de asemenea, împărțite aproximativ pe trei linii:
- Vizualizări , care sunt widget-urile care construiesc aplicația, inclusiv ecranele. Injectez servicii și modele folosind widget-ul
Consumer
din pachetulProvider
în vizualizările mele, astfel încât să pot construi interfața de utilizare pe baza datelor disponibile. WidgetulConsumer
reconstruiește, de asemenea, vizualizarea atunci când starea se schimbă, care este modul în care aplicațiile mele reacționează la schimbările de stare. - Modele , care sunt obiecte vechi simple pe care le folosesc pentru a păstra date structurate.
- Servicii/controlere , unde merge cea mai mare parte a logicii de afaceri. Aici sunt codificate și interfețele API, care pot prelua și trimite date către API. Aceste interfețe API oferă și acceptă modele pentru a transmite date.
Biblioteca bloc este, de asemenea, demnă de luat în considerare ca o alternativă la pachetul provider
. Are o arhitectură ușor diferită și folosește fluxuri de evenimente și stări pentru a conecta vederi și modele.
Este un mod puțin mai complex de a gestiona starea decât utilizarea bibliotecii provider
, dar se plătește dacă aveți o aplicație complexă în care faceți modificări la aceleași date din mai multe surse și trebuie să răspundeți la acele modificări din mai multe locuri.

Dacă ajungeți să nu utilizați BLoC sau provider
, va trebui să veniți cu o metodă de gestionare a stării în aplicația dvs., în special în ceea ce privește notificările.
Cum se compară Flutter cu alte cadre hibride
Reacționează nativ
React Native este de departe cel mai popular și de succes cadru de aplicații mobile hibride de până acum și cu un motiv întemeiat. A fost nevoie de un cadru web front-end popular și bine realizat, React, și a permis milioanelor de dezvoltatori front-end să înceapă să scrie și aplicații mobile. Sunt încrezător că multe dintre aplicațiile mobile grozave pe care le avem astăzi nu ar fi fost create dacă dezvoltatorii ar fi trebuit să găsească timpul și motivația pentru a învăța SDK-urile native de dezvoltare iOS și Android.
În acest context, sunt încrezător în a spune că Flutter va câștiga în cele din urmă ca cadru principal de aplicații mobile hibride. Există câteva motive pentru asta.
Componentele React Native sunt descrise în codul JavaScript și traduse în controale native. Aceasta înseamnă că utilizatorii au o interfață de utilizare diferită în versiunile iOS și Android ale aplicației. Dacă dezvoltatorii încearcă să obțină o experiență nativă pentru utilizatorii lor, acest lucru este grozav.
Cu toate acestea, înseamnă, de asemenea, că, dacă dezvoltatorii doresc să aibă aceeași interfață de utilizare consistentă pe ambele platforme mobile, trebuie să muncească din greu pentru a modela componentele native să arate la fel sau să folosească componente diferite care oferă același aspect și senzație pe ambele. platforme.
Comparați acest lucru cu Flutter, unde cadrul oferă propriile widget-uri pe toate platformele acceptate. Nu are loc nicio traducere, deoarece Flutter nu se bazează pe comenzile native pentru a picta interfața de utilizare. În schimb, folosește propria bibliotecă de controale. Biblioteca de widget-uri a lui Flutter oferă widget-uri care arată ca comenzi native, dar sunt complet opționale.
Această abordare are avantajele și dezavantajele sale. Cel mai mare pro este că acum aveți exact aceeași aplicație pe ambele platforme. Dar renunți la unele lucruri pentru a realiza asta.
Deoarece Flutter folosește propriile widget-uri în loc să le folosească pe cele native, nu puteți folosi multitudinea de biblioteci existente care oferă controale personalizate, așa cum puteți cu o muncă minimă pe React Native. În React Native, este destul de simplu să scrieți un mic wrapper în jurul oricărui control nativ existent și să îl faceți să funcționeze. Acesta este și motivul pentru care, în acest moment, nu există o implementare Google Maps stabilă pentru Flutter.
Cu toate acestea, capacitatea de a încorpora controale native se lucrează chiar acum și se află în previzualizarea dezvoltatorului, ceea ce înseamnă că o puteți utiliza, dar este posibil să trebuiască să vă confruntați cu erori. Odată ce este lansat, va închide această gaură destul de mare în funcționalitatea în Flutter în comparație cu React Native.
Aceeași funcție Flutter - folosind propria bibliotecă de widget-uri în loc de cele native - oferă un beneficiu imens și atunci când doriți să creați o componentă complet nouă. În React Native, ar trebui să construiți o componentă nativă a platformei și să o importați în aplicația dvs. prin legături.
Cu Flutter, puteți construi componente personalizate chiar în codul dvs. Dart. Aveți control complet asupra interfeței de utilizare cu widget-uri precum CustomPainter
care vă permit să desenați orice aveți nevoie și aveți disponibilă o bibliotecă de widget-uri care vă permit să implementați animații personalizate. Nu trebuie să ieși niciodată din baza de cod Dart pentru a construi aceste widget-uri personalizate.
Și acesta cred că este unul dintre cele mai mari beneficii Flutter. Aveți control complet asupra interfeței dvs. de utilizare din codul Dart și nu mai trebuie să vă faceți griji despre învățarea SDK-ului nativ al platformelor pentru care dezvoltați.
Apache Cordova
Apache Cordova nu este atât de mult un framework, cât este un browser wrapper. Cu Cordova, vă construiți aplicația folosind tehnologii web: HTML, CSS și JavaScript. Cordova vă oferă o modalitate de a rula această aplicație web pe platforme mobile și expune API-urile platformei native în JavaScript, astfel încât aplicația dvs. să poată interacționa cu platforma.
Există o serie de cadre diferite construite pentru Cordova. Unul dintre celebrele pe care le-am folosit în trecut este cadrul ionic. Oferă un set de componente UI care arată și acționează similar cu componentele platformei native. Cu toate acestea, aceste componente sunt implementate folosind HTML/CSS/JavaScript.
Experiența de dezvoltare cu Cordova și Ionic este foarte plăcută, iar începerea este foarte rapidă dacă ești deja dezvoltator web. Deoarece construiți aplicații folosind tehnologii web, aveți la dispoziție întregul ecosistem web. Gândiți-vă la sutele de mii de componente și biblioteci mici bazate pe HTML/CSS/JavaScript și le puteți folosi pe majoritatea, dacă nu pe toate. Aceasta înseamnă că majoritatea „widget-urilor” de care aveți nevoie sunt deja disponibile online.
Totuși, acesta este și un dezavantaj. Deoarece utilizați tehnologii web pentru a vă crea aplicațiile, este nevoie de multă grijă pentru a vă asigura că aplicația arată și se simte ca o aplicație mobilă, și nu doar un site web care a fost redus pentru a funcționa pe mobil.
În timp ce Cordova este o modalitate excelentă de a dezvolta un MVP sau chiar primele versiuni ale aplicației dvs., prima aplicație pe care am construit-o în Flutter a fost un port al unei aplicații Ionic. Îmbunătățirile de performanță pe care le-am obținut, în special în vizualizările care aveau mult conținut de parcurs, s-au remarcat încă de la prima interacțiune.
Xamarin
Nu am nicio experiență cu Xamarian, așa că nu le pot compara corect pe cele două. Cu toate acestea, în timpul cercetării mele, am dat peste un articol grozav care face o comparație corectă.
În timp ce articolul se termină cu o legătură între Flutter și Xamarian, pot spune cu încredere că dacă l-aș citi și ar fi trebuit să aleg între cele două cadre, aș fi mers cu Flutter pentru că lucrurile în care strălucește sunt lucrurile. că prețuiesc mai mult.
O prezentare tehnică a Flutter
Flutter: „Motorul de joc” al cadrelor de aplicații hibride
Printre cadrele hibride de aplicații mobile, Flutter are o abordare unică. Nu delegă interfața de utilizare către platforma nativă și nu utilizează o vizualizare web. În schimb, Flutter folosește propriul motor de randare pentru a picta interfața de utilizare. Acest lucru este similar cu modul în care jocurile folosesc un motor de joc care generează toate părțile interfeței lor de utilizare, în loc să utilizeze controale native.
Flutter folosește motorul grafic Skia de înaltă performanță, testat în luptă, pentru a desena totul în aplicația ta mobilă. Folosirea Skia oferă două avantaje principale la care mă pot gândi, deși sunt sigur că inginerii Google din spatele Flutter au avut în minte mult mai multe:
- Aplicația ta va arăta exact la fel pe toate platformele, fără a fi nevoie să fie personalizată pentru fiecare.
- Aplicația dvs. va obține performanțe grozave, similare cu aplicațiile native, deoarece nu există un strat intermediar care trebuie să vă traducă codul în codul platformei native pentru a desena widget-urile.
Totul este un widget
Documentele Flutter vorbesc despre Flutter ca pe un „cadru în stil React”. Acest lucru este evident în modul în care sunt construite aplicațiile prin compunerea de widget-uri mai mici ( componente în terminologia React) împreună.
Cu toate acestea, Flutter duce abordarea totul este un widget cu un pas mai departe decât orice alt cadru cu care am lucrat.
Un exemplu simplu este umplutura. Cu majoritatea cadrelor, umplutura este un atribut al elementelor UI. În Flutter, Padding
este un widget care poate împacheta alte widget-uri în interiorul său și poate adăuga umplutură în jurul widget-ului său copil.
Mai unic, InheritedWidget
nu are interfață de utilizare și nu oferă nicio interacțiune cu utilizatorul. Singura lui sarcină este să adauge informații în arborele widget, astfel încât, la un moment dat, adânc în arbore, să poți extrage acele informații.
De exemplu, rădăcina aplicației dvs. — widgetul MaterialApp
— poate injecta un serviciu de autentificare în arborele widget folosind un InheritedWidget
. Acum, în adâncul arborelui de pe altă pagină, cum ar fi pagina de profil de utilizator, puteți utiliza o metodă pentru a extrage acel serviciu de autentificare și a-l folosi.
Totul este o abordare widget nu trebuie să vă obișnuiți. Dar odată ce vă familiarizați cu acesta, devine o modalitate puternică de a construi funcționalități în aplicațiile dvs.
Flutter, săgeți și săpat în sursă
Flutter este strâns legat de Dart. În timp ce motorul de randare de bază este construit în C/C++, aceasta este doar o mică parte din Flutter.
Majoritatea bazei de cod Flutter este scrisă în Dart și există motive excelente pentru care echipa Flutter a ales-o. Dar cel mai mare beneficiu pentru mine a fost că puteam să mă uit cu ușurință la codul sursă al cadrului - și la toate widget-urile pe care le oferă - și să învăț din ele.
Acesta este un avantaj mai puternic decât își dau seama mulți dezvoltatori. Recomand ca majoritatea dezvoltatorilor să încerce să găsească răspunsuri în codul cadrelor/bibliotecilor lor, deoarece asta nu numai că îi ajută să înțeleagă ce se întâmplă sub coperți, ci îi expune și la un cod de înaltă calitate, bine conceput, ceea ce este o modalitate sigură. de creștere ca dezvoltator.
Interoperabilitatea platformei native
În timp ce Flutter oferă stratul UI, iar logica de afaceri este ușor de gestionat prin pachete Dart pur, pentru a accesa capabilitățile platformei native, cum ar fi geolocalizarea și controlul camerei, utilizarea pachetelor terțe ale pub.dev este cea mai ușoară strategie.
Cu toate acestea, dacă există o anumită funcționalitate de care aveți nevoie și care nu este disponibilă printr-un pachet existent, nu este prea dificil să scrieți unul singur. Eu nu am construit niciun pachet nativ pentru platformă, dar m-am uitat la codul sursă pentru mulți din curiozitate.
Chiar dacă nu sunt un dezvoltator nativ de aplicații, am putut să înțeleg în mare parte părțile native ale acelor plugin-uri și să văd cum s-au conectat la runtime Dart prin transmiterea mesajelor. Pentru dezvoltatorii de platforme native cu experiență, crearea unui pachet nou care să folosească o capacitate nativă va fi foarte ușoară.
Ar trebui să utilizați Flutter în următorul proiect?
Sperăm că acest articol v-a oferit suficiente informații pentru a decide dacă puteți utiliza Flutter în proiectul de aplicație mobilă. Am încercat să ofer o imagine echilibrată a lui Flutter, enumerând atât argumentele pro, cât și contra.
Deși nimeni nu poate lua decizia în locul dvs., vă pot oferi câteva sfaturi despre cum aș putea aborda problema folosirii Flutter în următoarea mea aplicație mobilă. Dacă avantajele lui Flutter pot oferi toate capabilitățile de care are nevoie o aplicație, aș alege-o într-o clipă.
Asta pentru că, în afară de puținele domenii în care Flutter lipsește în prezent, toate celelalte aspecte ale acestuia sunt cele pe care am ajuns să le admir și pe care am ajuns să mă bazez în dezvoltarea și lansarea celor cinci aplicații Flutter diferite în ultimul an:
- Ușurința lui Flutter de a începe
- Câștigurile de viteză care pot fi obținute din utilizarea unui cadru care a fost conceput de la zero pentru a se concentra pe viteza de dezvoltare
- Ecosistemul bogat de biblioteci Dart ușor disponibile și pachete terțe
- Modul diferit, dar extrem de productiv al lui Flutter, de a dezvolta aplicații folosind totul este o abordare widget
Cei care oferă servicii de dezvoltare a aplicațiilor mobile ar fi înțelept să-i dea lui Flutter o privire serioasă, dacă nu au făcut-o deja.
Voi încheia notând un ultim avantaj Flutter: are una dintre cele mai bune documentații din orice bibliotecă sau cadru cu care am lucrat. Este rar să caut pe google o întrebare Flutter și să nu primească răspuns de o pagină de pe site-ul propriu al lui Flutter.
În calitate de partener Google Cloud, experții Toptal certificați de Google sunt disponibili companiilor la cerere pentru cele mai importante proiecte ale acestora.