Ce face Map.of
Map.of(alt) creează un map nou cu aceleași perechi. Schimbările în copie nu afectează originalul, iar tipurile cheilor și valorilor rămân aceleași ca în original.
Map.unmodifiable(alt) creează o copie care aruncă UnsupportedError la orice încercare de modificare (adăugare, ștergere, schimbarea unei valori). Este util când dai datele altui cod și nu vrei să fie modificate.
Copia este „superficială”: dacă valorile sunt liste sau alte obiecte, copia și originalul folosesc aceleași obiecte.
Parametri
| Parametru | Descriere |
|---|---|
other |
Map-ul copiat. |
Ce returnează
Un map nou: modificabil pentru of, nemodificabil pentru unmodifiable.
Exemple
Exemplul 1: Copie independentă
void main() {
final original = {'Ana': 9, 'Mihai': 7};
final copie = Map.of(original);
copie['Mihai'] = 10;
copie['Radu'] = 8;
print('original: $original');
print('copie: $copie');
}
Rezultat
original: {Ana: 9, Mihai: 7}
copie: {Ana: 9, Mihai: 10, Radu: 8}
Exemplul 2: Configurație care nu poate fi schimbată
void main() {
final config = Map<String, String>.unmodifiable({'server': 'dexblog.ro', 'port': '443'});
print(config['server']);
try {
config['port'] = '80';
} on UnsupportedError catch (e) {
print('Nu se poate: ${e.message}');
}
}
Rezultat
dexblog.ro
Nu se poate: Cannot modify unmodifiable map
Greșeli frecvente
- Scrii
final copie = original;și crezi că ai o copie. Ambele nume arată spre același map; foloseșteMap.ofsau{...original}. - Crezi că
Map.unmodifiableblochează și listele din interior. Doar map-ul este blocat; listele din valori pot fi modificate în continuare.
Comenzi înrudite
Map: Colecție de perechi cheie–valoare: cauți rapid o valoare după cheia ei (nume, cod, oraș).List.from: Creează o listă nouă cu elementele unei colecții; of verifică tipul la compilare, from la rulare.List.empty: List.empty creează o listă goală; List.unmodifiable creează o copie care nu mai poate fi schimbată.Set.from: Creează un set nou din elementele unei colecții; Set.of verifică tipul la compilare, Set.from la rulare.UnmodifiableListView: O vedere doar pentru citire peste o listă: nu poate fi modificată, dar arată schimbările din lista originală.