Ce face Enum.name
Culoare.rosu.name este textul 'rosu'. Spre deosebire de toString(), care dă 'Culoare.rosu', name conține doar numele valorii. Este forma potrivită pentru salvare în JSON, fișiere sau baze de date.
Drumul invers se face cu NumeEnum.values.byName('rosu'), care returnează valoarea sau aruncă ArgumentError dacă numele nu există. Pentru afișare către utilizatori (cu diacritice, spații) adaugă în enum un câmp propriu, pentru că numele din cod nu pot avea spații.
Ce returnează
Un String.
Exemple
Exemplul 1: name, toString și byName
enum Status { nou, inLucru, livrat }
void main() {
var s = Status.inLucru;
print(s.name);
print(s.toString());
print(Status.values.byName('livrat'));
try {
Status.values.byName('anulat');
} on ArgumentError {
print('Status necunoscut');
}
}
Rezultat
inLucru
Status.inLucru
Status.livrat
Status necunoscut
Exemplul 2: Salvare în JSON și etichete pentru utilizator
import 'dart:convert';
enum Plata {
card('Card bancar'),
ramburs('Plată la livrare'),
transfer('Transfer bancar');
final String eticheta;
const Plata(this.eticheta);
}
void main() {
var json = jsonEncode({'comanda': 1024, 'plata': Plata.ramburs.name});
print(json);
var date = jsonDecode(json) as Map<String, dynamic>;
var plata = Plata.values.byName(date['plata'] as String);
print(plata.eticheta);
}
Rezultat
{"comanda":1024,"plata":"ramburs"}
Plată la livrare
Greșeli frecvente
- Folosești
toString()pentru salvare și apoi compari cu'rosu': textul este'Culoare.rosu'. Foloseștename.
Comenzi înrudite
Enum: Clasa de bază a tuturor tipurilor enum; index dă poziția valorii în declarație, începând de la 0.enum: Un tip cu un număr fix de valori numite (zilele săptămânii, stările unei comenzi), eventual cu câmpuri și metode.Enum.compareByName: Compară două valori enum după nume (alfabetic); compareByIndex le compară după ordinea din declarație.