Aprende Dart
Un curso de Dart online, gratis e interactivo. Escribes Dart en cada lección, con pistas de IA cuando el async se pone raro, y un certificado gratis al terminar.
18,630+ codders inscritos
- Apto para principiantes
Ayuda de codificación con IA
Lecciones interactivas prácticas
Narración de audio en cada lección
Cuestionarios para poner a prueba tu conocimiento
Certificado gratuito de finalización
Programa
Sección 1
Fundamentos
Empezar secciónEmpezarExpandirContraerConstruye una base sólida con conceptos esenciales y habilidades básicasIntroducción a Dart
4 lecciones224- 01¿Qué es Dart?Reto
- 02La función mainQuiz
- 03Imprimir salidaRetoQuiz
- 04Comentarios de códigoQuiz
Variables y Tipos de Datos Básicos
11 lecciones1075- 01¿Qué son las Variables?Quiz
- 02CadenasRetoQuiz
- 03Enteros (int)RetoQuiz
- 04Dobles (double)RetoQuiz
- 05Booleanos (bool)RetoQuiz
- 06Inferencia de Tipos con 'var'RetoQuiz
- 07Variables FinalesRetoQuiz
- 08Variables ConstantesRetoQuiz
- 09Convenciones de NombresRetoQuiz
- 10Seguridad Básica ante NullRetoQuiz
- 11Resumen - Declarando VariablesReto
Operadores Parte 1
6 lecciones638- 01Operadores AritméticosRetoQuiz
- 02División EnteraRetoQuiz
- 03Operador MóduloRetoQuiz
- 04Incremento y DecrementoRetoQuiz
- 05Atajos de AsignaciónRetoQuiz
- 06Resumen - Cálculos SimplesReto
Operadores Parte 2
6 lecciones636- 01Operadores de ComparaciónRetoQuiz
- 02AND LógicoRetoQuiz
- 03OR LógicoRetoQuiz
- 04NOT LógicoRetoQuiz
- 05Operadores de Prueba de TipoRetoQuiz
- 06Resumen - Realizando ComparacionesReto
Operadores Parte 3
3 lecciones320- 01Operador null-awareRetoQuiz
- 02Acceso null-awareRetoQuiz
- 03Operador condicionalRetoQuiz
Flujo de Control - Toma de Decisiones
6 lecciones636- 01La sentencia 'if'RetoQuiz
- 02La sentencia 'else'RetoQuiz
- 03La sentencia 'else if'RetoQuiz
- 04Resumen - Decisiones SimplesReto
- 05Sentencias 'if' AnidadasRetoQuiz
- 06La sentencia 'switch'RetoQuiz
Trabajando con Cadenas
5 lecciones538- 01Concatenación de CadenasRetoQuiz
- 02Interpolación de CadenasRetoQuiz
- 03Cadenas MultilíneaRetoQuiz
- 04Propiedades de CadenasRetoQuiz
- 05Métodos Básicos de CadenasRetoQuiz
Flujo de control - Bucles
6 lecciones637- 01El bucle 'for'RetoQuiz
- 02El bucle 'while'RetoQuiz
- 03El bucle 'do-while'RetoQuiz
- 04Usando 'break' en buclesRetoQuiz
- 05Usando 'continue' en buclesRetoQuiz
- 06Resumen - Código repetitivoReto
Colecciones - Listas Básicas
8 lecciones759- 01¿Qué son las listas?Quiz
- 02Creando una listaRetoQuiz
- 03Accediendo por índiceRetoQuiz
- 04Obteniendo la longitud de la listaRetoQuiz
- 05Agregando elementosRetoQuiz
- 06Eliminando elementosRetoQuiz
- 07Comprobando si una lista está vacíaRetoQuiz
- 08Iterando sobre una listaRetoQuiz
Colecciones - Conceptos básicos de Mapas
8 lecciones757- 01¿Qué son los Mapas?Quiz
- 02Creando un MapaRetoQuiz
- 03Accediendo a Valores por ClaveRetoQuiz
- 04Pares Clave-ValorRetoQuiz
- 05Obteniendo el Tamaño del MapaRetoQuiz
- 06Obteniendo las ClavesRetoQuiz
- 07Obteniendo los ValoresRetoQuiz
- 08Verificando si una Clave ExisteRetoQuiz
Fundamentos de Funciones
8 lecciones753- 01¿Qué son las funciones?Quiz
- 02Definiendo una función básicaRetoQuiz
- 03Llamando a una funciónRetoQuiz
- 04Funciones con parámetrosRetoQuiz
- 05Funciones que devuelven valoresRetoQuiz
- 06La palabra clave 'void'RetoQuiz
- 07Sintaxis de flechaRetoQuiz
- 08Resumen - Funciones simplesReto
Funciones Avanzadas
5 lecciones532- 01Parámetros Posicionales OpcionalesRetoQuiz
- 02Parámetros NombradosRetoQuiz
- 03Parámetros Nombrados RequeridosRetoQuiz
- 04Valores de Parámetro por DefectoRetoQuiz
- 05Resumen - Parámetros de FunciónReto
Null Safety en Profundidad
6 lecciones639- 01Comprendiendo NullRetoQuiz
- 02Tipos NullableRetoQuiz
- 03Tipos No NullableRetoQuiz
- 04Operador de Afirmación NullRetoQuiz
- 05Inicialización TardíaRetoQuiz
- 06Resumen - Manejo Seguro de NullReto
Conversión de tipos
4 lecciones430- 01Convertir String a intRetoQuiz
- 02Convertir String a doubleRetoQuiz
- 03Convertir números a StringRetoQuiz
- 04Manejar errores de conversiónRetoQuiz
Proyecto: Calculadora Simple
Proyecto5 lecciones1- 01ConfigurandoReto
- 02Declarando NúmeroProyecto
- 03Creando una OperaciónProyecto
- 04Realizando CálculoProyecto
- 05Mostrando ResultadoProyecto
Desafíos Fundamentales
3 lecciones3- 01Desafío: Lista de cálculosReto
- 02Desafío: Suma de númerosReto
- 03Desafío: Encontrar productoReto
Sección 2
Lógica y Flujo
Empezar secciónEmpezarExpandirContraerDomina la programación avanzada en Dart con un enfoque en estructuras de datos y control de flujo. Aprende a trabajar con arrays complejos, colecciones, manejo de errores y gestión del tiempo.Manipulación avanzada de listas
9 lecciones959- 01Propiedades de listas: first y lastRetoQuiz
- 02Estado de la lista: isEmpty y isNotEmptyRetoQuiz
- 03Invertir una listaRetoQuiz
- 04Añadir a una lista: insertRetoQuiz
- 05Eliminación en listas: removeWhereRetoQuiz
- 06Búsqueda en una lista: indexOfRetoQuiz
- 07Ordenar una listaRetoQuiz
- 08Mezclar una listaRetoQuiz
- 09Resumen - Organizador de listasReto
Operaciones funcionales con listas
7 lecciones746- 01Transformar con 'map'RetoQuiz
- 02Filtrar con 'where'RetoQuiz
- 03Uso de '.toList()'RetoQuiz
- 04Comprobar condiciones con 'any'RetoQuiz
- 05Condiciones con 'every'RetoQuiz
- 06Búsqueda con 'firstWhere'RetoQuiz
- 07Resumen - Filtrado de datosReto
Conjuntos
9 lecciones864- 01¿Qué es un Conjunto?Quiz
- 02Crear un ConjuntoRetoQuiz
- 03Añadir y eliminar elementos de un ConjuntoRetoQuiz
- 04Comprobar elementos en un ConjuntoRetoQuiz
- 05Convertir una lista en un ConjuntoRetoQuiz
- 06Unión de ConjuntosRetoQuiz
- 07Intersección de ConjuntosRetoQuiz
- 08Diferencia de ConjuntosRetoQuiz
- 09Resumen - Lista de invitados únicaReto
Manipulación avanzada de mapas
7 lecciones745- 01Iterar sobre un mapaRetoQuiz
- 02Comprobación de claves y valoresRetoQuiz
- 03Propiedades del mapa: keys y valuesRetoQuiz
- 04Adición condicional: putIfAbsentRetoQuiz
- 05Eliminar entradas de un mapaRetoQuiz
- 06Mapas anidadosRetoQuiz
- 07Resumen - Actualización de inventarioReto
Proyecto: Calculadora de carrito de compras
Proyecto5 lecciones1- 01Configuración del proyectoReto
- 02Agregar artículos al carritoProyecto
- 03Calcular el costo totalProyecto
- 04Aplicar un descuentoProyecto
- 05Mostrar el recibo finalProyecto
Manejo básico de errores
6 lecciones541- 01¿Qué son las excepciones?Quiz
- 02El bloque 'try-catch'RetoQuiz
- 03Capturar excepciones con 'on'RetoQuiz
- 04El bloque 'finally'RetoQuiz
- 05Lanzar una excepciónRetoQuiz
- 06Resumen - División seguraReto
Funciones avanzadas
7 lecciones646- 01Funciones anónimasRetoQuiz
- 02Pasar funciones como argumentosRetoQuiz
- 03Entendiendo los ClosuresRetoQuiz
- 04Introducción a la recursividadQuiz
- 05Función recursiva: Cuenta regresivaRetoQuiz
- 06Función recursiva: FactorialRetoQuiz
- 07Resumen - Procesador de listasReto
Proyecto: Analizador de texto simple
Proyecto7 lecciones18- 01Descripción general y configuración del proyectoRetoQuiz
- 02Contar caracteresProyecto
- 03Dividir el texto en palabrasProyecto
- 04Contar palabrasProyecto
- 05Contar palabras únicasProyecto
- 06Contador de frecuencia de palabrasProyecto
- 07Mostrar el análisisProyecto
Enumeraciones (Enums)
5 lecciones433- 01¿Qué son los Enums?Quiz
- 02Definir un Enum simpleRetoQuiz
- 03Uso de Enums en variablesRetoQuiz
- 04Enums en sentencias 'switch'RetoQuiz
- 05Resumen - SemáforoReto
Desafíos finales
3 lecciones3- 01Desafío: Clasificador de calificacionesReto
- 02Desafío: Contador de vocalesReto
- 03Desafío: FizzBuzzReto
Sección 3
Programación Orientada a Objetos
Empezar secciónEmpezarExpandirContraerDescubre cómo organizar el código con clases, objetos y estructuras reutilizablesFundamentos de POO
9 lecciones971- 01Archivos externosRetoQuiz
- 02Librerías e importacionesRetoQuiz
- 03Introducción a la POORetoQuiz
- 04Clases vs. ObjetosRetoQuiz
- 05La palabra clave thisRetoQuiz
- 06MétodosRetoQuiz
- 07Variables de instanciaRetoQuiz
- 08Conceptos básicos de constructoresRetoQuiz
- 09Resumen - Calculadora sencillaReto
Constructores en Dart
7 lecciones753- 01Constructor por defectoRetoQuiz
- 02Constructores nombradosRetoQuiz
- 03Listas de inicializaciónRetoQuiz
- 04Constructores constantesRetoQuiz
- 05Constructores de fábricaRetoQuiz
- 06Constructores de redireccionamientoRetoQuiz
- 07Resumen - Constructor de formasReto
Propiedades de clase
6 lecciones644- 01Miembros de instancia vs. estáticosRetoQuiz
- 02Campos Final y ConstRetoQuiz
- 03Variables LateRetoQuiz
- 04Métodos y campos estáticosRetoQuiz
- 05Getters y SettersRetoQuiz
- 06Resumen - Gestor de cuentas bancariasReto
Seguridad de nulos
7 lecciones754- 01Introducción a la seguridad de nulosRetoQuiz
- 02Nulables vs No nulablesRetoQuiz
- 03Los operadores ? y !RetoQuiz
- 04Palabra clave Late y Null SafetyRetoQuiz
- 05Operadores Null-awareRetoQuiz
- 06Null Safety en clasesRetoQuiz
- 07Resumen - Sistema de perfil de usuarioReto
Encapsulamiento
6 lecciones641- 01Miembros públicos vs. privadosRetoQuiz
- 02La convención del prefijo _RetoQuiz
- 03Privacidad a nivel de libreríaRetoQuiz
- 04Profundidad en Getters y SettersRetoQuiz
- 05Ocultamiento de informaciónRetoQuiz
- 06Resumen - Registros de estudiantesReto
Herencia
7 lecciones750- 01Herencia básicaRetoQuiz
- 02La palabra clave superRetoQuiz
- 03Sobrescritura de métodosRetoQuiz
- 04La anotación @overrideRetoQuiz
- 05La palabra clave final en clasesRetoQuiz
- 06Constructores y herenciaRetoQuiz
- 07Resumen - Jerarquía de empleadosReto
Clases abstractas e interfaces
7 lecciones753- 01Clases abstractasRetoQuiz
- 02Métodos abstractosRetoQuiz
- 03Interfaces en DartRetoQuiz
- 04Interfaces implícitasRetoQuiz
- 05Implementar vs. ExtenderRetoQuiz
- 06Interfaces múltiplesRetoQuiz
- 07Repaso - Calculadora de figurasReto
Mixins
7 lecciones752- 01Introducción a los MixinsRetoQuiz
- 02Creación de MixinsRetoQuiz
- 03Uso de múltiples MixinsRetoQuiz
- 04Palabra clave on en MixinsRetoQuiz
- 05Mixin vs HerenciaRetoQuiz
- 06Mixin vs InterfazRetoQuiz
- 07Resumen - Sistema AnimalReto
Polimorfismo
6 lecciones643- 01Fundamentos del polimorfismoRetoQuiz
- 02Polimorfismo mediante interfacesRetoQuiz
- 03Comprobación de tipos en tiempo de ejecuciónRetoQuiz
- 04Los operadores is y asRetoQuiz
- 05Palabra clave covariantRetoQuiz
- 06Resumen - Procesador de pagosReto
Colecciones y Genéricos
7 lecciones754- 01Visión general de List, Set y MapRetoQuiz
- 02Colecciones con seguridad de tiposRetoQuiz
- 03Clases genéricasRetoQuiz
- 04Métodos genéricosRetoQuiz
- 05Restricciones genéricasRetoQuiz
- 06Iterable e IteratorRetoQuiz
- 07Resumen - Almacenamiento genéricoReto
Métodos especiales
6 lecciones643- 01Sobrescritura de toString()RetoQuiz
- 02Sobrescritura de hashCode y ==RetoQuiz
- 03Interfaz ComparableRetoQuiz
- 04Método call()RetoQuiz
- 05Sobrescritura de noSuchMethodRetoQuiz
- 06Resumen - Colección personalizadaReto
POO Asíncrona
6 lecciones645- 01Futures y async/awaitRetoQuiz
- 02Fundamentos de StreamsRetoQuiz
- 03Stream ControllersRetoQuiz
- 04Constructores asíncronosRetoQuiz
- 05Asincronía en métodos de claseRetoQuiz
- 06Repaso - Data FetcherReto
Conceptos avanzados de POO
7 lecciones764- 01Composición vs. HerenciaRetoQuiz
- 02Métodos de extensiónRetoQuiz
- 03Clases invocablesRetoQuiz
- 04Clases selladas (Dart 3)RetoQuiz
- 05Records (Dart 3)RetoQuiz
- 06Patrones y coincidencia (3.0)RetoQuiz
- 07Enums con métodosRetoQuiz
Patrones de diseño Parte 1
5 lecciones543- 01Introducción a los patrones de diseñoRetoQuiz
- 02Patrón SingletonRetoQuiz
- 03Patrón FactoryRetoQuiz
- 04Patrón ObserverRetoQuiz
- 05Patrón StrategyRetoQuiz
Patrones de diseño Parte 2
7 lecciones763- 01Patrón CommandRetoQuiz
- 02Patrón AdapterRetoQuiz
- 03Patrón DecoratorRetoQuiz
- 04Patrón Template MethodRetoQuiz
- 05Patrón StateRetoQuiz
- 06Patrón CompositeRetoQuiz
- 07Patrón RepositoryRetoQuiz
Proyecto: Gestión de biblioteca
Proyecto6 lecciones1- 01Descripción general del proyectoReto
- 02Clases de Libros y UsuariosProyecto
- 03Sistema de préstamosProyecto
- 04Funcionalidad de búsquedaProyecto
- 05Interfaz de administradorProyecto
- 06Pruebas e integraciónProyecto
Desafíos finales
4 lecciones4- 01Plataforma de E-LearningReto
- 02Sistema bancarioReto
- 03Sistema de personajes de juegoReto
- 04Servicio de alquiler de vehículosReto
Cursos de Dart
Cursos prácticos de Dart, gratis para empezar en tu navegador.
Desafíos para principiantes - Practica conceptos básicos
PopularPon a prueba tus conocimientos básicos de programación e intenta resolver estos desafíos; usa cualquier lenguaje que quieras. ¡Feliz programación!
Certificado al completar
- 20
- 20
Problemas de programación
PopularPon a prueba tus habilidades de resolución de problemas de programación con los ejercicios de diferentes niveles de dificultad de este curso. Diseñado para programadores con conocimientos previos de la sintaxis básica en cualquier lenguaje de programación.
Certificado al completar
- 32
- 31
Problemas de programación: Volumen 2
Pon a prueba tus habilidades de resolución de problemas de programación con los ejercicios de diferentes niveles de dificultad de este curso. Diseñado para programadores con conocimientos previos de la sintaxis básica en cualquier lenguaje de programación, este curso es una extensión del primer volumen de Problemas de programación.
Certificado al completar
- 25
- 24
Pila - Serie de Estructuras de Datos #1
En este curso, aprenderás sobre la estructura de datos Pila, crearás una Pila desde cero usando tu lenguaje preferido y practicarás desafíos de programación con ella.
- 13
- 6
- 1
Heaps y Colas de Prioridad - Serie de Estructuras de Datos #7
NuevoEn este curso, aprenderás sobre la estructura de datos Heap (la base de las colas de prioridad), crearás un MinHeap desde cero usando tu lenguaje preferido y practicarás desafíos de programación con él.
Certificado al completar
- 14
- 6
- 1
Bootcamp de patrones de estrellas
Pon a prueba tus habilidades de resolución de problemas de programación para aprender a imprimir patrones de estrellas que van desde lo simple hasta lo complejo, involucrando diferentes niveles de bucles anidados, sentencias condicionales y cálculos matemáticos.
- 30
- 28
Por qué aprender Dart con Coddy
- Escribe y ejecuta código Dart real en tu navegador. Sin instalar el Dart SDK ni configurar el toolchain de Flutter. Cada lección compila tu programa de Dart en el servidor y te muestra la salida al instante.
- Dart como lo usan los desarrolladores de Flutter en el día a día: variables y tipos, control de flujo, funciones, clases y herencia, genéricos, null-safety, futures, async/await, streams. Las bases de Dart que todo desarrollador de Flutter necesita.
- Las pistas de IA te ayudan a leer y corregir errores de Dart y bugs de async sin arruinarte la respuesta, así que conceptos como null-safety y futures terminan haciendo clic en vez de confundirte.
- Certificado gratis de Dart al terminar el curso. Una señal creíble para puestos de Flutter y desarrollo móvil, donde Dart es el lenguaje principal.