Ce face var
var declară o variabilă locală sau un câmp a cărui valoare se poate schimba mai târziu. Tipul nu se scrie: Dart îl deduce din valoarea inițială. După var oras = 'Iași';, oras are tipul String pentru totdeauna, deci nu-i mai poți da un număr.
Poți scrie și tipul explicit în locul lui var: String oras = 'Iași';. Ghidul de stil Dart recomandă var (sau final) pentru variabilele locale și tipuri scrise pentru câmpuri, parametri și valori returnate.
Dacă scrii var x; fără valoare, tipul devine dynamic și variabila poate primi orice. De obicei e mai bine să dai o valoare sau un tip. Dacă valoarea nu se mai schimbă, folosește final.
Exemple
Exemplul 1: Tipul dedus din valoare
runtimeType arată tipul ales de Dart. Variabilele se pot modifica, dar rămân de același tip.
void main() {
var nume = 'Ana';
var varsta = 17;
var medie = 9.35;
var promovat = true;
print('${nume.runtimeType} ${varsta.runtimeType} ${medie.runtimeType} ${promovat.runtimeType}');
varsta = varsta + 1;
nume = 'Ana Popescu';
print('$nume are acum $varsta ani.');
}
Rezultat
String int double bool
Ana Popescu are acum 18 ani.
Exemplul 2: Acumularea unui total
O variabilă var care se schimbă în buclă. Tipul ei este double pentru că valoarea inițială este 0.0.
void main() {
final preturi = [12.5, 7.0, 30.25];
var total = 0.0;
for (final pret in preturi) {
total += pret;
}
print('Total coș: ${total.toStringAsFixed(2)} lei');
}
Rezultat
Total coș: 49.75 lei
Exemplul 3: var fără valoare inițială
Fără valoare, variabila este dynamic: acceptă un text, apoi un număr. Analizorul nu te mai ajută să prinzi greșelile, de aceea este rar folosit.
void main() {
var orice;
orice = 'Cluj';
print('$orice (${orice.runtimeType})');
orice = 42;
print('$orice (${orice.runtimeType})');
}
Rezultat
Cluj (String)
42 (int)
Greșeli frecvente
var x = 5; x = 'cinci';dă eroareaA value of type 'String' can't be assigned to a variable of type 'int': tipul a fost fixat la prima atribuire.var total = 0;urmat detotal += 2.5;:totalesteint, iar adunarea dădouble. Pornește de la0.0.- Folosirea lui
varpentru valori care nu se schimbă:finalspune mai clar intenția.
Comenzi înrudite
final: Declară o variabilă care primește valoarea o singură dată și nu mai poate fi reatribuită.const: Declară o constantă calculată la compilare; obiectele const sunt complet imuabile și partajate.late: Amână inițializarea unei variabile nenule: valoarea se dă mai târziu sau se calculează la prima folosire.dynamic: Tipul care dezactivează verificarea statică: orice metodă se poate apela, verificarea se face la rulare.