Objectifs
- Comprendre la structure d’une Map imbriquée en Dart
- Savoir créer et manipuler des Maps imbriquées
- Lire et écrire des données dans une Map imbriquée
Présentation
- Une Map imbriquée est une Map dont les valeurs sont elles-mêmes des Maps.
- Utile pour représenter des données complexes, comme des objets JSON ou des structures hiérarchiques.
Syntaxe de base d'une Map imbriquée
Map<String, Map<String, dynamic>> mapImbriquee = {
'personne1': {
'nom': 'Ali',
'âge': 25,
},
'personne2': {
'nom': 'Sami',
'âge': 30,
},
};
- La clé principale est un
String (ex: 'personne1')
- Chaque valeur est une autre Map avec des propriétés comme
nom et âge
Exemple 1 : Accéder à une valeur imbriquée
void main() {
Map<String, Map<String, dynamic>> etudiants = {
'etudiant1': {'nom': 'Sarah', 'moyenne': 14.5},
'etudiant2': {'nom': 'Hichem', 'moyenne': 16.2},
};
print("Nom de l'étudiant 2 : ${etudiants['etudiant2']?['nom']}");
}
- On accède à une valeur imbriquée en utilisant deux clés successives
etudiants['etudiant2']?['nom'] renvoie "Hichem"
- L’opérateur
? permet d’éviter les erreurs si la clé n’existe pas
Exemple 2 : Ajouter une nouvelle entrée à une Map imbriquée
void main() {
Map<String, Map<String, dynamic>> produits = {
'p1': {'nom': 'Stylo', 'prix': 1.2},
'p2': {'nom': 'Cahier', 'prix': 2.5},
};
produits['p3'] = {'nom': 'Gomme', 'prix': 0.6};
print("Liste des produits :");
produits.forEach((cle, valeur) {
print("$cle → ${valeur['nom']} coûte ${valeur['prix']} DT");
});
}
produits['p3'] ajoute une nouvelle Map imbriquée
- La méthode
forEach permet de parcourir et d'afficher toutes les entrées
Résumé
- Les Maps imbriquées permettent de structurer des données complexes.
- Syntaxe :
Map<clé, Map<clé, valeur>>
- On accède à une donnée en
map[clé1]?[clé2]
- On peut modifier, ajouter ou supprimer des sous-Maps comme dans une Map normale.