Google Flutter Review - Hvorfor udviklere af mobilapps elsker Flutter

Hvorfor elsker app-producenter Flutter? Fordi Flutter er fantastisk.

Flutter henvender sig til både virksomheder (ved at tilbyde rimelige udviklingsomkostninger) og udviklere (ved at tilbyde stor brugervenlighed og hastighed). Derfor er nogle store virksomheder skiftet til Flutter, såsom Google Ads, Alibaba, Reflectly og mange flere.

Google har gjort et godt stykke arbejde med at opbygge Flutter, og de fortsætter med at gøre denne ramme endnu bedre.

I dette indlæg giver jeg et hurtigt overblik over Flutter og dets helt nye frynsegoder, og jeg vil tale om, hvorfor denne ramme er værd at arbejde med. Plus, jeg vil diskutere, hvad der kan holde store virksomheder tilbage fra at vedtage Flutter.

Men først ting først.

Hvad er Gist of Flutter?

Her er ting om Flutter, som du måske allerede kender:

  • det er en open source, cross-platform værktøjssæt
  • apps er skrevet på Dart-programmeringssproget
  • den har sin egen grafikmotor (Skia)
  • det understøtter officielt tre platforme: iOS, Android og web (i beta)
  • uofficielt - det understøtter også desktop

Google introducerede den første version af Flutter i slutningen af ​​februar 2018. Fra april 2020 er frigivelse 1.12 tilgængelig.

Hvad er så specielt ved Flutter?

Flutter kombinerer kvaliteten af ​​native apps med fleksibiliteten ved udvikling på tværs af platforme.

Faktisk lader mange værktøjer på tværs af platforme dig skrive koden en gang og bruge den på både iOS og Android. Alligevel kan ikke alle gengive det samme ligne en native app.

Men det er præcis, hvad Flutter gør: i stedet for at være en indpakning oven på native UI-komponenter (som React Native og Xamarin) trækker Flutter UI fra bunden.

Flutter opretholder appens oprindelige oplevelse og fornemmelse, og du behøver ikke bekymre dig om dens ydeevne på nogen platform.

Desuden, da Flutter er en open source-ramme, kan enhver udvikler foretage ændringer i den på GitHub og sende fletningsanmodninger. Og hvis du ser på Flutter's popularitet - 90,4K GitHub- stjerner , 12k gafler og 18.445 forpligtelser - får du ideen om, at devs elsker Flutter og bidrager til at gøre det bedre.

Hvordan fungerer Flutter?

Flutter kompileres ikke direkte til iOS- eller Android-apps . Apps lanceres baseret på en kombination af rendering engine (bygget på C ++) og Flutter (bygget på Dart). Alle filer, der genereres på denne måde, knyttes til hver app og SDK-forsamlingssoftware til en bestemt platform.

Det er som spiludvikling: et spil tildeler ikke sine rammer, og funktionalitet udføres med spilmotoren. Samme for Flutter-software - alle apps baseret på Flutter SDK erstatter dele af native rammer med Flutter-elementer.

Selvom det kan påvirke slutappens størrelse, er ydeevnen stadig ret god - gengivelse foretages med hastigheder op til 120 FPS .

På grund af oprindelig kompilering til ARM-processorer, enkel gengivelse og et sæt integrerede widgets og værktøjer gør Flutter udviklingsprocessen enklere.

Plus, det tilbyder et par meget velsmagende funktioner som Hot Reload .

Sådan fungerer det:

Når du klikker på knappen Hot Reload, vises alle ændringer i kode med det samme i gadgets, emulatorer og simulatorer. Appen fortsætter med at arbejde fra hvor det var, før du ramte den hotte genindlæsning: koden opdateres, men udførelsen fortsætter.

Hvorfor vælge Flutter til applikationer på tværs af platforme?

Nye Flutter-versioner kommer ved med at komme ud med mere avancerede funktioner i ærmerne. Men der er allerede mange forbedrede funktioner, der perfekt forklarer, hvorfor Flutter er så elsket.

For det første gør udviklingen på tværs af platforme med Flutter, i modsætning til hvad mange tror, ​​ikke software værre.

Flutter leveres med alle indfødte widgets til Android- og iOS-grænseflader som Material Design og Cupertino. Desuden kan rammen ændre adfærden for separate elementer for at skabe lignende UX for appens brugere.

For det andet gør Flutter det muligt at implementere diskret filkompilering i dev-tilstand. JiT-kompilering fremskynder udvikling og fejlretning af software.

For det tredje giver Flutter mulighed for en fleksibel og skalerbar backend.

Det understøtter plugins som Firebase, SQLite og så videre (pub.dev hjælper dig med at finde den, du har brug for). Firebase gør appens infrastruktur skalerbar, serverløs og overflødig.

Så hvis du arbejder på apps, der kræver databaser i realtid eller skyfunktioner, har Flutter din ryg.

Og den sidste: Flutter er meget let at lære .

Helt fra starten satte Google devs et mål om at sænke adgangsbarrieren. De udarbejdede omhyggeligt dokumentation og ressourcer, som udviklere kan bruge. Det har endda specielle sektioner, du kan bruge til at begynde at lære rammen afhængigt af din specialisering:

  • Flutter til Android-devs
  • Flutter til iOS-devs
  • Flutter for React Native devs
  • Flutter til Xamarin.Forms devs
  • Fladre til webudviklere

På grund af Flutter's detaljerede dokumentation finder du ud af, hvordan du skriver kode i Dart, selvom du kun har erfaring med Unity-grafiske værktøjer til at lave Android-spil.

Flutter 1.12 (Seneste version) og dens frynsegoder

Lad os se, hvilke hot-funktioner Flutter introducerede i sin seneste 1.12-version:

iOS mørk tilstand

Fra nu af understøtter Flutter iOS 13-udseendet, inklusive komplet mørk tilstandsstøtte i Cupertino-widgets. Og det handler ikke kun om at udskifte baggrunden, men tilpasse resten af ​​farverne til at være et godt match.

Tilføjelse til app-support

En anden stor forbedring er Add-to-App-opdateringen, som er til at integrere Flutter i allerede eksisterende iOS / Android-apps.

Den nye version af Flutter understøtter tilføjelse af en Flutter-instans i fuld skærm til appen sammen med:

  • Stabiliseret API-integration i Java, Kotlin, Objective-C og Swift
  • Støtte til brug af plugins i Flutter-moduler
  • Yderligere integrationsmekanismer via Android AAR'er og iOS-rammer

Beta-websupport

Nye Flutter master-, dev- og beta-kanaler giver forbedret support til internettet. Vil du have nogle eksempler?

Her er Rivet , et uddannelsesprojekt, der brugte Flutter og Firebase til at oprette en webversion af deres app.

Dart 2.7

Den nye version af rammen introducerer Dart 2.7.

Denne opdatering forbedrer oplevelsen af ​​at fungere med Dart 2.5 i, hvordan sikre strenge håndterer evner og udvidelsesprocesser. Dette hjælper udviklere med at forhindre fejl, når variabler får en nulværdi og analyserer heltal i en streng.

Og her er nogle andre funktioner i den nyeste Flutter-version:

  • support til macOS desktop (alpha)
  • debugging af flere enheder
  • test af gyldent billede
  • Android build forbedringer
  • opdateret DartPad

Det er godt, men ikke uden problemer: Hvad holder Devs tilbage?

Flutter er virkelig sejt: let at starte, let at arbejde med og præsenteret af et stort tech-firma. Men her er grundene til, at din Seniorudvikler muligvis ikke deler din optimisme.

Darts (lave) popularitet

I modsætning til Java / Kotlin til Android eller Swift / Objective-C til iOS har Dart ikke høj popularitet endnu. Og det er meget usandsynligt, at det vil.

Dart er ikke så svært at lære, og der er masser af tutorials (som denne), men nogle devs holder fast ved Java og andre kendte værktøjer.

På samme tid kan du ikke bruge Flutter og ikke bruge Dart: selv Flutter's dræberfunktion - Hot Reload - fungerer ikke uden Dart.

Understøtter ikke alle enheder

Du kan ikke oprette apps til 32-bit iOS-enheder som dem, der er ældre end iPhone 5s. Samme for Windows-desktops: du kan ikke køre Flutter på din 32-bit bærbare computer.

Og Flutter devs har ingen planer om at ordne det, da "dette ville indebære en meget betydelig mængde arbejde."

Så hvis du vil kode med Flutter, skal du eje en x64-bit enhed eller opgradere den, du bruger nu.

Begrænset antal biblioteker

Selvom der er mange Flutter libs som fl_chart (til tegning af grafik i Flutter), path_provider (bruges til at finde en fil på Android / iOS), flutter_sliding_tutorial og mange flere, er antallet stadig begrænset.

Dette er ikke svært at forklare: Flutter er en relativt ny ramme, og udviklere har ikke haft nok tid til at udvikle så mange libs som native sprog tilbyder.

Stadig, de vigtigste biblioteker er der allerede, og nye kommer ud hele tiden.

Flutter-apps har større størrelse

... sammenlignet med native udviklede applikationer. Flutter's team målte den minimale appstørrelse (uden materialekomponenter, kun en enkelt Center-widget, bygget med flutter build apk - split-per-abi), bundtet og komprimeret, til at være 4,3 MB til ARM og 4,6 MB til ARM 64 .

Den grundlæggende app er nu ~ 4 MB i Android og ~ 10 MB i iOS.

Lidt dokumenteret ekspertise

Flutter kan være elsket af udviklere, men store virksomheder har ikke skyndt sig at stoppe med at lave native (eller React Native) apps og henvende sig til Flutter.

For de fleste virksomheder er Flutter's nyhed. Dart er nyere end Java eller C #, og Flutter selv er helt ny.

Der er selvfølgelig mange Flutter open source-apps, herunder store som Google Ads eller Hamilton (se hele listen her), men alligevel ikke for mange.

Og ingen ønsker at være den person, der vedtager en helt ny ramme kun for at skulle skifte til oprindelig udvikling et par måneder senere.

Men hvad der er endnu vigtigere er, at Flutter er den vej, du går alene:

  • der er ikke mange bekræftede bedste praksis (i det mindste ved store projekter)
  • altid en chance for, at du er den første, der står over for dette særlige problem
  • lille håb nogen hjælper dig - du bliver nødt til at tage hvert trin omhyggeligt og være klar til at imødegå konsekvenserne

Hvor skal man bruge Flutter

Først og fremmest er det bedre at bruge Flutter til MVP-opstart, når du har begrænset tid og ofte penge til at bekræfte forretningsmodellen.

En Flutter-app er billigere *:

  • * sammenlignet med prisen på to native apps
  • udviklingsteamet er 40% mindre
  • lineære processer
  • du kan bruge mere tid på at arbejde på appens funktioner

Ved at vælge et Flutter-projekt reducerer du antallet af udviklingstimer. Flutterudvikling tager ikke så meget tid i forhold til native.

Her er et eksempel. Lad os sige, at du laver en Instagram-lignende app til to platforme. iOS udvikling vil tage, groft, omkring 700 timer, Android - også 700H .

Med Flutter dækker du begge platforme og sparer tid: 700h Android + 700h iOS vs. 700h Flutter.

Du sparer masser af tid, du kan bruge på noget andet, som at polere funktionerne.

Afslutter

Hvis du bygger apps i begrænset tid med et begrænset budget, er Flutter bestemt værd at prøve.

Det er lige så godt som det ser ud til at være, og med hver nye opdatering tilføjer Google devs mere jævne værktøjer til udvikling på tværs af platforme.

Selvfølgelig kan denne ramme virke usædvanlig for C # og Java-elskere, men det betyder ikke, at det vil tvinge dig ud af din komfortzone. Når du har mestret de små syntaksforskelle, vil du snart se, at UI-udvikling går et par gange hurtigere sammenlignet med native-udvikling.

Og hvis du har succes, og hvis Flutter holder fast, kan det give dig nogle spændende mobiludviklingsoplevelser og muligheder i fremtiden.