🗺️ Map es utilizado generalmente para trabajar con JSON.
Bienvenida e Introducción
Introducción y Bienvenida
Dart vs. Go vs. JavaScript vs. Kotlin
DartPad y qué editores utlizar
Básicos 1: Variables y Operadores
Variables: Números (int,double), String y booleanos
Colecciones
Diccionarios
Constantes (final y const)
Operadores aritméticos, de asignacion y lógicos
Básicos 2: Funciones y Parámetros
Declaración de funciones y la función Main()
Funciones de sintaxis corta (Arrow) y Anónimas (Lambda)
Parámetros requeridos, opcionales, posicionados, nombrados y por defecto
Básicos 3: Flujos de Control
If-Else y Expresiones Condicionales
Switch y Case
For
While y do-while
Break y Continue
Clases
Definición de clases y miembros
Constructores por defecto, por parámetro o nombrados
Métodos Getter y Setter y variables privadas
Herencia
Clases Abstractas
Interfaces implícitas
Utilizar Flutter en Dart
Iniciar y estructurar un proyecto en Flutter
Contenedores
Creando un botón personalizado con el Widget Container
Modelos de datos y peticiones http
Trabajando datos http y Widget Future Builder
Ejecutando el mismo código en Android y iOS
Conclusiones
Dart en el futuro
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Los Maps, también llamadas Hash o Diccionarios son objetos que tienen una asociación entre llaves y valores.
Aportes 60
Preguntas 1
🗺️ Map es utilizado generalmente para trabajar con JSON.
RESUMEN DE LA CLASE
Diccionarios/Maps/Hash: Son objetos que tienen una asociación entre llaves y valores, ambas de cualquier tipo. Las llaves son únicas, pero los valores pueden repetirse.
Declaración:
Map<tipo_llave, tipo_valor> map;
Inicialización:
map = {1:"Rojo",2:"Verde"};
Agregar elemento:
map[3]="Azul";
Eliminar elemento:
map.remove(llave);
Saber si el map está vacío:
map.isEmpty //Retorna un valor "true" si está vacío y "false" en caso contrario
Saber longitud:
map.lenght //Retorna un valor entero con la longitud del mapa
Es muy normal usar el tipo dynamic en la declaración de los Maps.
Código comentado de la clase:
// * Clase sobre Diccionarios (Maps o Hash)
// ? Es un objeto que tiene una asociación entre llaves y valores,
// ? ambos pueden ser declaradas de cualquier tipo de objeto.
// ? Cada llave debe ser única pero el valor puede utilizarse tantas
// ? veces como se necesite !
main(List<String> args) {
Map estoEsUnMapa; // ! Esto es una declaración de un objeto tipo Map
estoEsUnMapa = {1:'Rojo', 2:'Verde'}; // ? La declaración es diferente a las colecciones,
// ? debe ser realizada entre llaves {} y debe asignársele una llave a cada valor.
print(estoEsUnMapa); // * He aquí su impresión, y se visualiza igual de cómo se declara.
Map<int, dynamic> estoEsUnMapaDinamico; // ! Con esta sintaxis, podemos definir cual será la llave int:dynamic y cual será el valor almacenado.
// ! En este caso, al ser dinámico el valor asignado, puede tomar muchos tipos de valores.
estoEsUnMapaDinamico = {1:'Uno', 2:2, 3:3.124}; // ! Prueba de lo anterior dicho.
estoEsUnMapaDinamico[4] = true; // ? Otra forma de agregar contenido a un mapa.
print(estoEsUnMapaDinamico); // * Visualización de su contenido
estoEsUnMapaDinamico.remove(3); // ! Eliminamos un valor, dándole a este métodos u llave.
print(estoEsUnMapaDinamico); // * Visualizamos.
bool estaVacioElMapa = estoEsUnMapaDinamico.isEmpty; // * Método para comprobar si el mapa está vacio
int longitud = estoEsUnMapaDinamico.length; // * Método para comprobar la longitud del mapa.
print("Está vacio el mapa? : $estaVacioElMapa, cual es su longitud? : $longitud"); // ! Prueba de lo anterior mencionado.
}
Utilizando el RemoveWhere:
Map<int , String > lista = { 1: 'Dart Vader', 2: 'Obi Wan', 3: 'Yoda'};
lista.removeWhere((key,value) => value == 'Dart Vader');
// {2: 'Obi Wan', 3: 'Yoda'};
lista.removeWhere((key,value) => key == 3);
// {2: 'Obi Wan'};
Un ejemplo utilizando los conceptos de este video!
//Tipo map, el cual define a pares de valores (llave y valor)
String propiedad = 'soltero';
Map <String, dynamic> persona = {
'nombre' : 'Carlos',
'edad' : 32,
'soltero' : true
};
//Impresion del dato que queremos
print(persona['nombre']);
print(persona['edad']);
//Imprimimos el valor de la variable propiedad que tiene a su vez el valor de la lllave soltero del map persona
print(persona[propiedad]);
//Inicio con num
Map <int, String>personas = {
1: 'Tony',
2: 'Peter',
9: 'Strange'
//Esto no se hace'10': 'Juan'
};
//Nuevo elemento
personas.addAll({ 4: 'Banner' });
print(personas);
//Obtener un valor
print(personas[2]);
//Obtenemos la longitud del map personas
print(personas.length);
//Eliminamos una posicion del map personas
personas.remove(9);
//Imprimimos el resultado
print(personas);
La opción addAll tampoco estaría mal implementarla 😄
Los maps son muy utilizes en peticiones http con flutter
Un objeto Map corresponde a un conjunto de llave : valor y es equivalente en JavaScript a un objeto de tipo JSON (JavaScript Object Notation) pero con la diferencia de que siempre el dato correspondiente a la llave es tratado como un String
.
Un objeto Map en Dart:
Map<String, dynamic> map = {'uno': 1, 'dos': 2, 'tres': 3};
Es equivalente en JavaScript a:
A) var json = {'uno': 1, 'dos': 2, 'tres': 3};
Aunque también puede ser escrito de la siguiente forma:
B) var json = {uno: 1, dos: 2, tres: 3};
Pero como quiera JavaScript lo interpreta de la siguiente manera:
console.log(json); => {'uno': 1, 'dos': 2, 'tres': 3}
tambien se puede agregar mas objetos de la siguiente manera usando
map.addAll(objeto);
Ejemplo:
Map<String,String> user;
user={
"firstName":"cosme",
"lastName:":"fulanito"
}
Entonces si quiero agregar un nuevo clave valor al objeto actual, lo puedo hacer de la siguiente manera.
user.addAll({'email':'[email protected]'});
print(user);
entonces en el ouput voy a tener lo siguiente objeto:
{
fistName: cosme,
lastName: fulanito,
email: cosme.fulanito@gmail.com
}
Esto es igual a los diccionarios de python.
Si buscas un una clave que no esta en el mapa o diccionario se obtendrá un null.
le agregue en la posicion [5] la cadena del ejemplo anterior.
la verdad Dart me parece un lenguaje bastante intuitivo, me recuerda mucho a Kotlin
Excelente curso!, consulta: los Map seria lo mismo que declarar un objeto en javascript? o un array asociativo en php?
😃
Me ha tocado usarlo recibiendo datos del Backend en Flutter en formato JSON…
Son muy necesarios para ese tipo de cosas.
void main(List <String> arguments) {
Map<String,int> myMap;//Map<Tipo1,Tipo2> variableName
myMap = {'Dato1':1,'Dato2':2,'Dato3':3};//Llenar manualmente datos del mapa
print(myMap);//Imprimir mapa
myMap['Dato4'] = 4;//Añadir dato al mapa
print(myMap);//Imprimir mapa
myMap.remove('Dato3');//Remover elemento del mapa
print(myMap);
}```
Es posible iniciar el valor de un set colocando los distintos elementos entre llaves directamente
Set set;
set = {'uno', 'dos', 'tres'}
Genial, los mapas son realmente facil de utilizar y tienen muchisímas aplicaciones. Entre ellas las clásicas agendas telefónicas:
ejemplo:
{Diego: 311xxxxxxx,
Maria: 312xxxxxxx,
Nathalia: 320xxxxxxx}
aprendí a leer C++ en otro curso y ya sabía escribir python, está siendo muy fácil asimilarlo, muchas gracias.
Los maps son conocidos como diccionarios o Hash
La forma de declarar es la siguiente
Map map;
Para asígnarle los datos se lo hace de la siguiente manera:
map={1:'Rojo', 2:'Amarillo'};
Podemos añadir un valor más al map o los que querramos y visualizarlo así de la siguiente manera
map[3]='Verde'
print (map)
El número 3 es el índice o la llave que así se maneja los maps en Dart para acceder a cada uno de sus valores la forma de la salida de datos se da así
{1: Rojo, 2: Amarillo,3:Verde}
Existen características que permite trabajar con maps las cuales son los siguientes
En esta operación se remueve el contenido con la llave 2 y el resultado será así
{1: Rojo, 3: Verde}
El resultado será
print (map);
Resultado
{1: Rojo, 3: Azul, 4: Rosa, 5: Naranja, 6: Azul, 7: Celeste, 8: Café}
Map también es un tipo de colección. En Maps, los datos se almacenan en clave: pares de valores. Las claves y los valores pueden ser de cualquier tipo.
El mapa es una colección cultivable que significa que puede reducirse y crecer en tiempo de ejecución.
El mapa también puede contener un valor NULL .
Hay dos formas de declarar mapas:
Usando Map Literal
Usando el constructor de mapas
Wooo la verdad tiene cosas muy buenas que parecen de Javascript
Si usan
print(map.values)
solo van a imprimir los nombres de los colores
Trabaje con Java hace unos 6 a;os y actualmente con php y js pero siento que este lenguaje es muy fluido para trabajar, no siento alguna dificultad para empesar a trabajar con el, incluso me estoy sumergiendo mas con la documentacion
¿Existen ventajas de especificar el tipo de dato? Ya sea en variables, colecciones, etc.
El primer lenguaje que aprendí fue C y la sintaxis es muy similar. Me está gustando Dart 😃
Dart es un lenguaje maravilloso. Su sintaxis es al ya conocido y clásico estilo C. Si conoces C o Java, vas volando rápidamente con Dart 😉
Map<int, dynamic> map;
map = {1:'Rojo',2:'Verde'};
print(map);
map[3]='Azul';
print(map);
map[4]=100;
print(map);
map.remove(2);
print(map);
print(map.isEmpty);
print(map.length);
Que genial!!
Algo mas o menos parecido para cuando queremos hacer tipo las interfaces el dynamic ¿?
Los Map son casi lo mismo que los JSON o tienen la misma simulitud ?
Didáctico…
Excelente la manera en la llevas el ritmo de las clases. 😃.
Excelente la manera en la que llevas el ritmo de las clases, very good.
Por esto me gusta platzi por el dinamismo en sus clases y me encanta la forma en la que aprendo porque puedo dejarlo de ver por que me llego trabajo pero cuando lo remoto recuerdo absolutamente todo y puedo seguir aprendiendo
genial
Aquí dejo mi algunos ejemplos de uso con maps:
//Maps son conjuntos de elementos que permiten relacionarnos con una clave que lo identifica de manera unica y nos permite obtener su valor.
var idiomas = {
//clave: valor
'es': 'Español',
'en': 'Ingles',
'fr': 'Frances'
};
print('Estos son los idiomas: ${idiomas}');
print(idiomas['es']);
//podemos añadir otro conjunto de elemntos clave valor.
var nuevoIdiomas = {'ch': 'Chino'};
idiomas.addAll(nuevoIdiomas);
print(idiomas);
//podemos tambien crear claves numericas en los mpas
var alumnos = Map();
alumnos[1] = 'Manuel';
alumnos[2] = 'Josue';
alumnos[3] = 'Juan';
alumnos[4] = 'Pedro';
print(alumnos);
print(alumnos[4]);
//tambien podemos de crear un conjunto estatico aqui no podemos crear mas elementos
var idiomas2 = const {
//clave: valor
'es': 'Español',
'en': 'Ingles',
'fr': 'Frances'
};
//obtener todas las llaves del mapa
var sortedKeys = alumnos.keys.toList()..sort();
print(sortedKeys);
main(List<String> args) {
Map<int, dynamic> map;
map = {1:'Rojo',2:'Azul'};
//Agregar un valor
map[3] = 'Verde';
print(map);
print(map.length);
//Eliminar un elemento
map.remove(1);
print(map);
//Vacio
print(map.isEmpty);
//Logitud
print(map.length);
}
Realmente es muy fácil el manejo de los maps. A la expectativa de los demás contenidos
// Maps
main(List<String> arguments) {
Map map;
map = {1:‘Rojo’, 2:‘Verde’};
print (map);
}
Salida: {1: Rojo, 2: Verde}
Probando Maps
void main() {
Map <int,String> map;
map={};
map[100]="Freddy";
int longitud=map.length;
print('$map longitud: $longitud');
map[0]="Juan";
map[2]="Pedro";
map[4]="Gaby";
map[6]="Rocio";
longitud=map.length;
print('$map longitud: $longitud');
print(map);
print(map.entries);
map.remove(2);
longitud=map.length;
print('$map longitud: $longitud');
Result:
{100: Freddy} longitud: 1
{100: Freddy, 0: Juan, 2: Pedro, 4: Gaby, 6: Rocio} longitud: 5
{100: Freddy, 0: Juan, 2: Pedro, 4: Gaby, 6: Rocio}
(MapEntry(100: Freddy), MapEntry(0: Juan), MapEntry(2: Pedro), MapEntry(4: Gaby), MapEntry(6: Rocio))
{100: Freddy, 0: Juan, 4: Gaby, 6: Rocio} longitud: 4
}```
CLASE DICCIONARIOS o MAPS
//Map map;
Map<int, dynamic> map;
map = {1:‘Rojo’, 2: ‘Verde’, 3:‘Amarillo’};
** Asignación de valores**
map[4]=‘Cafe’;
Eliminar una posición
map.remove(2);
Obtener la longitud
print(map.length);
Muchas gracias.
Diccionarios/Maps/Hash: Son objetos que tienen una asociación entre llaves y valores, ambas de cualquier tipo. Las llaves son únicas, pero los valores pueden repetirse.
'
Agregando el contenido de una lista al valor de la llave 3
List list;
list = ['Amarillo', 'Negro'];
map = {1: 'Rojo', 2: 'Verde'};
map[3] = list;
print(map);
En la mayoría de los casos eh ocupado Listas , rara vez ocupe Maps, pero por lo que veo aquí son mas utilizados y junto con el tipo dynamic tiene mas funcionalidad.
Buena explicación , todo claro.
python … :V
Casi no se escucha nada
Los maps son keys y value, también pueden tener tipos.
Si queremos que sea un tipo de valor:
Map<int, String> map; // Si definimos que los valores son enteros nos dara error, ejemplo: Map<int,int> map; “error”.
Tambien podemos decir:
Map <int, dynamic> map; //En los mapas es en el lugar mas normal que nosotros podemos encontrar la palabra dynamic en su uso, nos funcionara sin ningún problema, es muy funcional.
// Poder agregar un valor también podemos hacerlo de la siguiente forma:
map[3] = ‘Azul’;
print (map);
Salida: {1: Rojo, 2: Verde, 3: Azul}
// De esta forma podemos hacer la asignación de cualquier valor que este permitido, recuerden que lo definimos como int y String o en este caso dynamic.
Diferencia de usarlo como string o dynamic:
map[4] = 100;
print (map); Salida de dynamic = {1: Rojo, 2: Verde, 3: Azul, 4: 100}
map[4] = 100;
print(map); Salida tipo String = No podemos realizar la ejecución porque se da un error, en ese caso el String solo lo dejamos en ‘Rosa’ (tipo String) y ya esta.
Map al igual que una lista o un set tiene propiedades que nos van a ayudar bastante a trabajar con ella, como pueden ser eliminar una posición como pueden ser:
map.remove(2);
Salida: {1: Rojo, 3: Azul, 4: Rosa} = Elimino la posicion 2 con el numero y todo.
print(map.isEmpty); = esto comprueba si el map esta vacio y si aparece false es porque no esta vacio.
print(map.length); = para conocer la longitud y saber cuantos elementos hay en el map.
// Declare using Maps Literals
var gifts = {
// Key: Value
'first': 'partridge',
'second': 'turtledoves',
'fifth': 'golden rings'
};
// Declare using Map Constructor
var colours = Map();
colours[0] = 'Red';
colours[1] = 'Green';
colours[2] = 'Blue';
// Add element
gifts['fouth'] = 'book';
//Remove element
gifts.remove('second');
print(gifts.length);
print(gifts.isNotEmpty);
ESTOS SON TODOS MIS APUNTES EN CODIGO, ASI ENTIENDO YO. SALUDOS.
import 'package:untitled/untitled.dart' as untitled;
main(List<String> arguments) {
int valInt = 1;
double valDouble = 2.0;
String valstring = "Hola mundo,";
dynamic valbool = true; //permite cambiar el tipo que contiene
print('$valstring mi nombre es Joseph' + ' uso simbolo de mas');
// al poner triple comilla se puede hacer saltos de linea para textos largos
//la forma correcta de concatenar es usando $ (pesitos)
print(valInt);
print(valDouble);
print(valstring);
print(valbool);
//COLECCIONES: LIST Y SET
List<String> list; // asi se declara
list =['Negro', 'Rojo'];
list.add('Verde'); // es para agregar a la lista, por defecto se ira al final
list.removeLast(); //es para eliminar el ultimo de la lista
print(list);
List<String> listAux = ['Azul', 'Rosa']; // esta es otra lista
list.addAll(listAux); //este metodo es para agregar una lista en otra
print(list);
list.removeAt(2); // eliminar por indice
print(list);
//set
Set set; // Asi se declara
set = Set.from(['Juan', 'Pedro', 'Moises']); // esta es una lista con set
print(set);
set.add('Mateo');//aqui se agrega al final de la lista
print(set);
set.remove('Juan'); // aqui se tiene q especificar que es lo que deseas borrar
print(set);
//DICCIONARIO, dynamic es frecuentemente utilizado en los diccionarios, ya que puede cambiar su tipo de dato
Map<int, dynamic> map; // asi se declara un diccionario, puedes declarar de que tipo quieres que sea
map = {1:'Rojo', 2:'Verde'}; // asi es su estructura
print(map);
map[3]='Azul'; // asi se asigna un valor a un diccionario
print(map);
map[4]=100; // al colocar dynamic se puede poner cualquier tipo de dato a una variable
print(map);
map.remove(2); // removiendo la posicion dos
print(map);
print(map.isEmpty); // este metodo es para saber si la lista esta vacio o no
print("En la lista tenemos: ${map.length} elementos"); // este metodo es para saber cuantos elementos tenemos
}```
main(List<String> args) {
List<String> lista;
lista=['Negro','Rojo'];
lista.add('Blanco');
print(lista);
lista.remove('Blanco');
print(lista);
lista.removeLast();
List<String> ListAux = ['Azul','Verde'];
lista.addAll(ListAux);
print(lista);
lista.removeAt(2);
print(lista);
Set set;
print(set);
set= Set.from(['Freddy','Pedro']);
print(set);
set.add('Monica');
print(set);
set.remove('Freddy');
print(set);
}```
Para los que cuentan con intellij estas recomendaciones del lenguaje son importantes
para los que se cansaron de escribir en intellij el punto y coma del final, pueden
"Press Ctrl-Shift-Enter to complete the current statement (adding semicolons,
braces and everything as required) and move to the next line."
Los Maps, también llamadas Hash o Diccionarios son objetos que tienen una asociación entre llaves y valores.
Una pena, esta muy mal planteado este curso desde un principio. No me dan ganas de terminarlo.
Los map son colecciones que en vez de tener un indice como las listas, se referencian con un sistema de claves(llaves) para poder acceder a ellos, la llave puede ser cualquier tipo de dato y no puede repetirse una llave.
Map + dart + flutter debe hacer cosas muy interesantes en firebase
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?