CursosEmpresasBlogLiveConfPrecios
Curso de Dart desde Cero

Colección de colecciones

Curso de Dart desde Cero

Contenido del curso

Introducción

  • 1
    Bienvenida al curso

    Bienvenida al curso

    01:44 min
  • 2
    Introducción de Dart

    Introducción de Dart

    07:59 min
  • 3
    Introducción a DartPad

    Introducción a DartPad

    12:17 min

Las bases de programación

  • 4
    Variables

    Variables

    04:51 min
  • 5
    Tipos de datos básicos

    Tipos de datos básicos

    15:33 min
  • 6
    Tipos de datos avanzados

    Tipos de datos avanzados

    07:23 min
  • 7
    Manipulación de variables

    Manipulación de variables

    05:54 min
  • 8
    String con Dart

    String con Dart

    13:47 min
  • 9
    Conversión de tipos

    Conversión de tipos

    05:17 min
  • 10
    Ejercicio sobre las bases de programación

    Ejercicio sobre las bases de programación

    00:49 min

Flujo de datos

  • 11
    Operaciones

    Operaciones

    13:36 min
  • 12
    Condicionales

    Condicionales

    08:44 min
  • 13
    Ciclos

    Ciclos

    08:04 min
  • 14
    Enumeraciones

    Enumeraciones

    04:59 min
  • 15
    ¡Construye una calculadora!

    ¡Construye una calculadora!

    01:07 min

Colecciones

  • 16
    Introducción a las colecciones

    Introducción a las colecciones

    01:50 min
  • 17
    Colección de tipo Lista

    Colección de tipo Lista

    09:46 min
  • 18
    Colección de tipo Sets

    Colección de tipo Sets

    05:04 min
  • 19
    Colección de tipo Mapa

    Colección de tipo Mapa

    07:52 min
  • 20
    Colección de colecciones

    Colección de colecciones

    Viendo ahora
  • 21
    Flujos dentro de colecciones

    Flujos dentro de colecciones

    04:44 min
  • 22
    Reto de colecciones

    Reto de colecciones

    00:44 min

Conclusión

  • 23
    Sigue aprendiendo Dart

    Sigue aprendiendo Dart

    00:38 min
Tomar examen

Colección de colecciones

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads

      Comentarios16

      Luis Fuentes

      Luis Fuentes

      Estudiante
      Hace 4 años
      William Condori

      William Condori

      Estudiante
      Hace 4 años
      Jozek Andrzej Hajduk Sánchez

      Jozek Andrzej Hajduk Sánchez

      Estudiante
      Hace 4 años
      Giovanni Rincon Jimenez

      Giovanni Rincon Jimenez

      Estudiante
      Hace 4 años
      Rafael Holzhacker

      Rafael Holzhacker

      Estudiante
      Hace 4 años
        Emmanuel Rodríguez

        Emmanuel Rodríguez

        Estudiante
        Hace 4 años
      Hector Leopoldo Coronado Saavedra

      Hector Leopoldo Coronado Saavedra

      Estudiante
      Hace 2 años
      Daulis Gonzalez

      Daulis Gonzalez

      Estudiante
      Hace 3 años
      kolab Linkear

      kolab Linkear

      Estudiante
      Hace 3 años
      Edgar Wilson Vásquez Coronado

      Edgar Wilson Vásquez Coronado

      Estudiante
      Hace 3 años
      Emmanuel Rodríguez

      Emmanuel Rodríguez

      Estudiante
      Hace 4 años
      Jonathan Rocha

      Jonathan Rocha

      Estudiante
      Hace 4 años
      Mario Luis Centeno Vargas

      Mario Luis Centeno Vargas

      Estudiante
      Hace 4 años
      Enrique Reyes

      Enrique Reyes

      Estudiante
      Hace 4 años
      Esteban Monguí Torres

      Esteban Monguí Torres

      Estudiante
      Hace 4 años
      Andres Badillo

      Andres Badillo

      Estudiante
      Hace 4 años
      Jozek Andrzej Hajduk Sánchez

      Jozek Andrzej Hajduk Sánchez

      Estudiante
      Hace 4 años

      Usando el método reduce para simplificar la suma

      void main(){ Map<String, dynamic> restaurant = { "name": "Luis's chickens", "starts": [5, 4, 3, 4, 2] }; if (restaurant['starts'] != null) { restaurant['score'] = restaurant['starts'].reduce((int sum, int start) => sum + start) / restaurant['starts'].length; } print(restaurant); print(restaurant.keys); print(restaurant.values); }

      Spread Operator (...)

      Los 3 puntos que usamos en esta clase se llama Spread Operator y para los que gusten conocer más al respecto les comparto la documentación: https://dart.dev/guides/language/language-tour#spread-operator

      Colleciones a unir:

      List<String> primaryColors = ["red", "yellow", "blue"]; List<String> secondaryColors = ["purple", "green", "orange"];

      Map colección anidada sacar la media para calificación estrellas restaurante

      Cómo puedo acceder a un elemento de una Lista que esté adentro de un Mapa?

      Lo siguiente no me lo permite (el output es null):

      Map<String, dynamic> x = { 'nombre': 'Juan', 'edad': 29, 'ciudadNatal': 'Bogota', 'prueba': [1, 2, 30, 4] }; print(x['prueba'[2]]);

      Hola 👋 Debes asegurarte que el tipo es una lista, ya que un elemento como dinámico no se sabe la manera de indexación. . Te comparto la solución:

      final profile = { 'nombre': 'Juan', 'edad': 29, 'ciudadNatal': 'Bogota', 'prueba': [1, 2, 30, 4] }; final test = profile['prueba']; if (test is List) print(test[2]);
      void main() { Map restaurante = { "nombre": "Pollos del monte", "estrellas": [5, 4, 3, 4, 2] }; print(restaurante); if(restaurante['estrellas'] == null) { print("El restaurante no tiene estrellas"); } else { List<int> estrellas = restaurante["estrellas"]; int suma = 0; for(int i = 0; i < estrellas.length; i++) { suma += estrellas[i]; } double promedio = suma / estrellas.length; restaurante.addAll({"promedio": promedio}); } print(restaurante); } ```void main() {  Map restaurante = {   "nombre": "Pollos del monte",   "estrellas": \[5, 4, 3, 4, 2]  };    print(restaurante);    if(restaurante\['estrellas'] == null) {    print("El restaurante no tiene estrellas");  } else {    List\<int> estrellas = restaurante\["estrellas"];    int suma = 0;    for(int i = 0; i < estrellas.length; i++) {      suma += estrellas\[i];    }    double promedio = suma / estrellas.length;    restaurante.addAll({"promedio": promedio});  }  print(restaurante);}

      Mi Aporte

      Screenshot 2023-05-13 at 2.58.15 PM.png

      Utilizando el método forEach() para recorrer de una mejor manera una lista.

      void main() { Map<String, dynamic> restaurante; restaurante = { "nombre": "Pollos del monte", "estrellas": [5, 4, 3, 4, 2] }; if (restaurante["estrellas"] != null) { List<int> estrellas = restaurante["estrellas"]; int suma = 0; estrellas.forEach((el) => suma += el); double promedio = suma / estrellas.length; restaurante.addAll({"promedio": promedio}); } }

      Es una buena práctica usar una nueva variable para la unión de las 2 colecciones, así mantenemos su valor inicial de ambas para poder usarla de manera propia, quizás en otras funcionalidades.

      Colección de colecciones

      ℹ️ Definición Se dice que una colección de colecciones, es aquel objeto el que sus valores poseen el tipo object o dynamic, según sea el caso.

      .

      Promedio de una lista

      Sea un mapa de conductor que posee como atributos un nombre ( name) y calificaciones (scores), obtenga el promedio globlabl de dicho mapa.

      final Map<String, dynamic> driver = { 'name': 'Frank Mendoza', 'scores': [5, 4, 3, 4, 2] }; final List<int> scores = driver['scores']; final scoresLenght = scores.length; final scoreTotal = scores.reduce((int total, int value) => total + value); final average = scoreTotal / scoresLenght; print(""" Driver: ${driver['name']} Rate Average: ⭐️ $average """);

      Código de Colecciones Anidadas:

      void main() { Map restaurante = { "nombre": "Pollos del Monte", "estrellas": [5, 4, 3, 4, 2] }; print(restaurante); if (restaurante["estrellas"] == null) { print("El restaurante no tiene estrellas"); } else { List<int> estrellas = restaurante["estrellas"]; int suma = 0; for (int i = 0; i < estrellas.length; i++); { suma += estrellas[i]; } double promedio = suma / estrellas.length; print(promedio); } }

      Código de Unión deColecciones:

      void main () { List<String> coloresPrimarios = ["amarillo", "azul", "rojo"]; List<String> coloresSecudarios = ["verde", "morado", "naranja"]; coloresSecudarios.addAll(coloresPrimarios); print (coloresSecudarios); } ````

      Aplicando lo aprendido

      void main() { Map<String, dynamic> restaurante = { 'nombre': 'Pollos Locos', 'estrellas': [2,4,6,8], }; int suma = 0; List<int> estrellas=[]; print(restaurante); if (restaurante['estrellas'] == null) { print("El restaurante no tiene estrellas"); } else { print("El restaurante si tiene estrellas"); estrellas = restaurante['estrellas']; print(estrellas); for (int i = 0; i < estrellas.length; i++) { suma += estrellas[i]; } double promedio = suma / estrellas.length; promedio = double.parse(promedio.toStringAsFixed(2)); print(promedio); restaurante.addAll({'promedio': promedio}); List<int> estrellas2=[1,3,5,7,9,...estrellas]; print(estrellas2); } print(restaurante); }

      Les comparto mi código del restaurante:

      void main() { //Coleccion de coleciones Map restaurante = { 'nombre': 'Pollos Locos', 'estrellas': [1,2,3,5,2,4] }; print(restaurante); if(restaurante['estrellas'] == null) { print('El restaurante no tiene calificaciones aún'); } else { //Guardando la lista en una variable aparte List <int> estrellas = restaurante['estrellas']; //Obteniendo el total de las estrellas final suma = estrellas.reduce((value, element) => value + element); //Obteniendo el promedio double promedio = suma / estrellas.length; //Limitando la cantidad de decimales String promFinal = promedio.toStringAsFixed(2); //añadiendo el promedio al arreglo tipo Map restaurante.addAll({'promedio': promFinal}); print(restaurante); } }

      Se pueden unir dos o más colecciones mediante la implementación del spread operator así es como se le llama a los 3 puntos que se colocan antes del nombre de la lista. También existe el null-aware spread operator es muy similar, pero termina con un signo de interrogación

      ... List<String> joinedList=[...listA, ...?listB];

      Esto es para validar si la lista a desempaquetar es un elemento nulo y de esta manera evitar errores al compilar el código.

      Dejo enlace a la documentación oficial

      Mi aporte:

      <void main() { List<String> coloresPrimarios = [ "rojo", "amarillo", "azul" ]; List<String> coloresSecundarios = [ "morado", "verde", "naranja", //...coloresPrimarios ]; List<String> colores = [ ...coloresPrimarios, ...coloresSecundarios ]; //coloresSecundarios.addAll(coloresPrimarios); print(coloresPrimarios); print(coloresSecundarios); print(colores); }>

      La colección inicial del restaurante

      Map restaurant = { "name": "Pollos del Monte", "starts": [5, 4, 3, 4, 2] };