Codarea unei aplicații Android cu Flutter și Dart

Ce veți crea

Dacă sunteți în căutarea unor abordări alternative pentru dezvoltarea de aplicații Android, ar trebui să încercați să oferiți Flutter-ului Google, un cadru bazat pe limbajul de programare Dart, o încercare. 

Aplicațiile construite cu Flutter sunt în mare măsură indistinguizabile față de cele construite folosind SDK-ul Android, atât în ​​ceea ce privește aspectul, cât și performanța. Mai mult, cu trucuri minore, pot fi difuzate pe dispozitive iOS.

În acest tutorial, vă voi prezenta la elementele de bază ale Flutter, arătându-vă cum să construiți o aplicație simplă pentru calculator.

Cerințe preliminare

Pentru a putea urma acest tutorial, veți avea nevoie de:

  • cea mai recentă versiune de IntelliJ IDEA
  • Android Studio 2.2 sau o versiune ulterioară
  • un dispozitiv sau un emulator care rulează Android 4.4 sau o versiune ulterioară
  • un computer care rulează Mac sau Linux

1. De ce folosiți flutter?

Făcând la 60 fps, interfețele utilizator create cu Flutter funcționează mult mai bine decât cele create cu alte cadre de dezvoltare cross-platform, cum ar fi React Native și Ionic. În cazul în care nu vă excitează, iată câteva motive pentru care ați putea folosi Flutter:

  1. Flutter utilizează Dart, un limbaj rapid, orientat pe obiecte, cu câteva caracteristici utile, cum ar fi mixuri, generice, izolate și tipuri statice opționale.
  2. Flutter are propriile componente UI, împreună cu un motor care le oferă platformele Android și iOS. Majoritatea componentelor UI, chiar din cutie, sunt conforme cu instrucțiunile din Material Design.
  3. Aplicațiile Flutter pot fi dezvoltate utilizând IntelliJ IDEA, un IDE foarte asemănător cu Android Studio.

2. Instalarea flutterului

Puteți obține cea mai recentă versiune de Flutter prin clonarea repozitorului GitHub.

git clone https://github.com/flutter/flutter.git

Flutterul are mai multe dependențe, cum ar fi fonturile Dart SDK și Material Design. Din fericire, prima dată când rulați instrumentul de diagnostic al Flutter, toate acestea sunt instalate automat.

cd flutter / bin ./flutter doctor

Pentru a putea să construiți aplicații Android, trebuie să indicați și Flutter în directorul în care ați instalat aplicația Android Studio.

./ flutter config - android-studio-dir ~ / android-studio

3. Configurarea IDEA IntelliJ

Deși puteți utiliza direct CLI-ul Flutter pentru a crea și a rula aplicații noi, este posibil să aveți o experiență de dezvoltare mult mai bună dacă utilizați un IDE. IDE-ul recomandat pentru Flutter este IntelliJ IDEA. 

Înainte de a începe să dezvoltați aplicațiile Flutter cu acesta, trebuie să instalați pluginuri pentru Dart și Flutter. Pentru a face acest lucru, începeți prin selectarea Configurează> Plugin-uri în ecranul de întâmpinare IntelliJ.

În dialogul care apare, apăsați pe Navigați în depozite ... și căutați Lance conecteaza. Odată ce ați găsit, apăsați pe Instalare pentru a-l instala.

În mod similar, căutați și instalați fluturare conecteaza.

Odată ce ambele pluginuri sunt instalate, reporniți IntelliJ IDEA.

Acum trebuie să îndreptați pluginul Flutter către directorul în care ați instalat Flutter. Pentru a face acest lucru, selectați Configurați> Setări în ecranul de întâmpinare și, în dialogul care apare, navigați la Limbi și cadre> Flutter. În Flutter SDK path câmp, introduceți calea absolută a directorului.

presa O.K pentru a finaliza configurația.

4. Crearea unui nou proiect

Pentru a crea un nou proiect Flutter, apăsați pe Creați un nou proiect pe ecranul de întâmpinare. În Proiect nou dialog, alegeți fluturare și apăsați Următor →.

Acum puteți da un nume semnificativ proiectului dvs. și apăsați finalizarea.

Odată ce proiectul a fost generat, vă sugerez să apăsați pe Alerga pentru a vă asigura că SDK-ul Dart, pluginurile și cadrul Flutter sunt configurate corect. Dacă sunt, după câteva secunde, ar trebui să vedeți următorul ecran pe dispozitiv sau emulator:

Rețineți că, din acest punct, nu trebuie să apăsați pe Alerga butonul din nou, chiar și după efectuarea modificărilor de cod. Flutter suporturi încărcare reîncărcabilă, o caracteristică care vă permite să împingeți instantaneu actualizări la aplicație fără a o reporni.

5. Crearea de widget-uri

În acest tutorial, vom crea o aplicație pentru calculatoare tip cu următoarele widget-uri:

  • A TextField să accepte o sumă a facturii
  • A TextField să accepți un procentaj
  • A RaisedButton utilizatorul poate apăsa pentru a calcula vârful

Fiecare widget Flutter poate fi fie StatelessWidget sau a StatefulWidget. După cum sugerează și numele, a StatefulWidget are o Stat obiect asociat cu acesta, ceea ce îi permite nu numai să stocheze date, ci și să reacționeze la schimbările din date.

A StatelessWidget, pe de altă parte, este un obiect mai simplu, care nu este proiectat să stocheze în mod persistent date. Pentru a păstra scurt acest tutorial, vom crea un tip de calculator ca un StatelessWidget. Prin urmare, deschis main.dart, eliminați toate conținutul și adăugați următorul cod:

pachet de import: flutter / material.dart "; clasa TipCalculator extinde statlessWidget 

În codul de mai sus, import line este importantă pentru că material.dart este biblioteca care conține toate widget-urile Material Design pe care le vom folosi în această aplicație.

Pentru a stoca suma facturilor și a procentului de vârf, adăugați două clase ale membrilor la clasă.

double billAmount = 0,0; vârf dubluPercentaj = 0,0;

Pentru a începe crearea interfeței de utilizator a aplicației, înlocuiți-o construi() metodă.

@override Widget build (Context BuildContext) // Mai multe coduri aici

Să creați acum cele două TextField widget-uri. În timp ce facem acest lucru, putem specifica detalii cum ar fi etichetele pe care dorim să le asociăm cu widget-urile și tipurile de tastaturi virtuale care trebuie afișate când sunt focalizate.

Deoarece nu putem recupera direct conținutul unui a TextField widget, trebuie să asociem și un onChanged manipulator de evenimente cu el. În interiorul handlerului, care primește un InputValue obiect, putem actualiza conținutul variabilelor membrilor clasei noastre.

În consecință, adăugați următorul cod în interiorul construi() metodă:

// Crearea primului câmp de introducere a textului TextField billAmountField = TextField nou (labelText: "Sumă factură (\ $)", tastaturăTip: TextInputType.number, onChanged: (valoare InputValue) try billAmount = double.parse (value.text) captură (excepție) billAmount = 0.0;); // Creează un alt câmp de introducere TextField tipPercentageField = TextField nou (textText: "Tip%", tastaturăTip: TextInputType.number, hintText: "15", onChanged: (Valoare InputValue) try tipPercentage = double.parse (value.text) ; captură (excepție) tipPercentage = 0.0;);

Chiar dacă nu ați lucrat niciodată cu Dart înainte, codul de mai sus ar trebui să fie destul de intuitiv, atât timp cât sunteți familiarizați cu Java. De exemplu, puteți vedea că folosim analiza() pentru a converti fiecare TextField widget-ul de conținut text la un dubla obiect. Deoarece analiza() metoda poate arunca o FormatException, este, de asemenea, înconjurat de o încearcă să prinzi bloc.

Crearea unui RaisedButton widgetul seamănă cu crearea unui TextField widget. Cu toate acestea, pentru a le atribui o etichetă, trebuie să creați un nou Text widget și adăugați-l ca pe ei copil.

// Crează butonul RaisedButton calculateButton = nou RaisedButton (copil: text nou ("Calculate"), onPressed: () // Mai multe coduri intră aici);

În interiorul onPressed manipularea evenimentului butonului, vom calcula sfatul și suma totală care urmează să fie plătită și afișată atât în ​​interiorul unui dialog modal. Pentru a crea dialogul, putem folosi AlertDialog clasă. Odată creat, dialogul poate fi afișat prin trecerea lui ca argument la showDialog () metodă.

În consecință, adăugați următorul cod în interiorul onPressed organizatorul evenimentului:

// Calculați vârful și dublul total calculatTip = billAmount * tipPercentaj / 100.0; dublu total = billAmount + calculatTip; // Generarea dialogului AlertDialog dialog = nou AlertDialog (conținut: text nou ("Tip: \ $$ calculatTip \ n" "Total: \ $$ total")); // Afișați dialogul de dialog ShowDialog (context: context, copil: dialog);

În codul de mai sus, rețineți că am folosit caracteristica de interpolare a șirului Dart pentru a încorpora variabilele din interiorul lui conţinut a dialogului. De asemenea, puteți vedea că literalul șirului în Dart poate fi concatenat doar prin plasarea lor una lângă alta - deși puteți utiliza + operatorul, dacă doriți.

6. Crearea unui arbore widget

O aplicație Flutter nu este altceva decât un copac de widget-uri. Cu alte cuvinte, creați o aplicație Flutter creând pur și simplu widgeturi multiple și stabilind relații părinte-copil între ele.

În prezent, nu există nicio relație între widget-urile pe care le-am creat în etapa anterioară. Așa cum ați fi ghicit, toți vor fi frați, așa că acum să creăm un widget pentru ei.

Un widget care poate avea mai mulți copii este denumit, de obicei, ca widget de aspect. Flutter oferă mai multe widgeturi pentru a alege de la. Pentru aplicația noastră, Coloană widget-ul este cel mai potrivit pentru că poziționează toți copiii unul sub celălalt.

În plus, pentru a se conforma spec. Material Design, trebuie să adăugăm o căptușeală 16 dp la Coloană widget. Putem face acest lucru făcând-o a copil a recipient widget.

Container Container = Container nou (umplutură: const EdgeInsets.all (16.0), copil: coloană nouă (copii: [billAmountField, tipPercentageField, calculateButton]));

O interfață de utilizare Material Design nu este completă fără o bară de aplicații. De aceea, creați unul folosind acum AppBar widget.

AppBar appBar = nou AppBar (titlu: text nou ("Tip Calculator"));

Planurile care conțin bare de aplicații și containere sunt atât de frecvente încât Flutter oferă o Schelă widget pentru a vă ajuta să stabiliți rapid o relație între ele.

Schelă scheletă = schelă nouă (appBar: appBar, corp: container);

Cu Schelă widget-ul de la rădăcină, copacul nostru widget este acum gata. Puteți merge mai departe și utilizați Schelă widget ca valoare de returnare a construi() metodă.

schelet de întoarcere;

Dacă vă este greu să vizualizați arborele, următoarea diagramă ar trebui să vă ajute:

7. Crearea unui punct de intrare

Fișierul Dart are nevoie de a principal() funcția de punct de intrare. În interiorul lui, trebuie să sunăm runApp () funcția de a umfla și de a face efectiv arborele widget pe care l-am creat în pasul anterior.

În plus, ale noastre TipCalculator widgetul trebuie plasat în interiorul unui MaterialApp astfel încât să se poată aplica o temă de design material și o schemă de culori. Prin urmare, adăugați următorul cod la main.dart:

void main () runApp (new MaterialApp (titlul: 'Tip Calculator', home: new TipCalculator ())); 

Acum puteți apăsa butonul Apel de reîncărcare fierbinte pentru a începe să utilizați aplicația de pe dispozitiv.

Concluzie

În acest tutorial, ați învățat cum să utilizați Flutter și Dart, împreună cu IntelliJ IDEA, pentru a crea o aplicație simplă pentru Android.

După părerea mea, Flutter are aproape toate lucrurile pe care un dezvoltator le-ar putea căuta într-un cadru de dezvoltare a aplicațiilor mobile pe mai multe platforme. Înainte de a vă decide să începeți să vă construiți următoarea aplicație mare cu aceasta, trebuie totuși să știți că este încă un cadru foarte nou și care se dezvoltă rapid.

Pentru a afla mai multe despre Flutter, vă puteți referi la documentația oficială.

Cod