Skip to content

Instantly share code, notes, and snippets.

@afrolino02
Last active May 31, 2025 14:14
Show Gist options
  • Save afrolino02/0d21401906acbfd5d518e0f262067e65 to your computer and use it in GitHub Desktop.
Save afrolino02/0d21401906acbfd5d518e0f262067e65 to your computer and use it in GitHub Desktop.
id aliases tags created links title
tpl.flutter
flutter,
cursos,
programacion,
computacion,
frameworks
[[Curso Flutter Fernando Herrera]]
12. Dynamic type - Curso Flutter

12. Dynamic type - Curso Flutter

Maps en Dart

En este capítulo, exploramos los Maps en Dart, una estructura de datos esencial para almacenar pares clave-valor. Un Map es una colección dinámica donde cada clave es única y se asocia a un valor. Tanto las claves como los valores pueden ser de cualquier tipo.

Los Maps son increíblemente útiles para representar datos con una estructura similar a un diccionario, donde se busca un valor específico utilizando su clave correspondiente.


Código de Ejemplo: Maps

void main() {
  // final Map<String, dynamic> pokemon = { ... };
  // Se declara un Map llamado 'pokemon'.
  // <String, dynamic> especifica que las claves son de tipo String
  // y los valores pueden ser de cualquier tipo (dynamic).
  final Map<String, dynamic> pokemon = {
    'name': 'Ditto',
    'hp': 100,
    'isAlive': true,
    'abilities': <String>['impostor'],
    'sprites': {
      1: 'ditto/front.png',
      2: 'ditto/back.png',
    }
  };

  // print(pokemon);
  // Imprime todo el Map 'pokemon' en la consola.
  print(pokemon);

  // print('Name: ${pokemon['name']}');
  // Accede al valor asociado a la clave 'name' y lo imprime.
  // Si la clave no existe, devuelve 'null'.
  print('Name: ${pokemon['name']}');

  // print('Name: ${pokemon['sprites']}');
  // Accede al valor asociado a la clave 'sprites', que en este caso
  // es otro Map anidado.
  print('Name: ${pokemon['sprites']}');
}

Accediendo a Valores en Maps Anidados

En este segmento, profundizamos en la forma de acceder a los valores dentro de un Map, especialmente cuando estos valores son, a su vez, otros Maps anidados. Esto es crucial para trabajar con estructuras de datos complejas que representan objetos con propiedades que también son objetos o colecciones.

La clave para acceder a valores anidados es encadenar los corchetes [], utilizando la clave de cada nivel del Map hasta llegar al valor deseado.

[!NOTE] Tarea: Acceder a valores anidados

void main() {
  // Se declara un Map llamado 'pokemon'.
  // Las claves son String y los valores pueden ser de tipo dinámico.
  // Dentro de 'sprites', hay un Map anidado con claves de tipo int y valores String.
  final Map<String, dynamic> pokemon = {
    'name': 'Ditto',
    'hp': 100,
    'isAlive': true,
    'abilities': <String>['impostor'],
    'sprites': { // Este es un Map anidado
      1: 'ditto/front.png', // Clave 1, Valor 'ditto/front.png'
      2: 'ditto/back.png',  // Clave 2, Valor 'ditto/back.png'
    }
  };

  // Accediendo a un valor dentro del Map anidado 'sprites'.
  // Primero se accede al Map 'sprites' usando la clave 'sprites'.
  // Luego, se accede al valor dentro de 'sprites' usando la clave [1].
  print('Back: ${pokemon ['sprites'] [1]}'); // Salida: Back: ditto/front.png

  // Accediendo al segundo valor dentro del Map anidado 'sprites'.
  print('front: ${pokemon ['sprites'][2]}'); // Salida: front: ditto/back.png
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment