Hoja de ruta del módulo¶
Visión global de todo el curso en una página: qué se da, cuándo, con qué actividades, cómo se evalúa y qué hay que tener preparado en cada momento.
El módulo de un vistazo¶
gantt
title Aplicaciones Híbridas · 2026-2027 (lunes 15:30-18:30)
dateFormat YYYY-MM-DD
axisFormat %d %b
section RA1 · Diseño (20 %)
T1 Entorno, Dart y primera app :t1, 2026-09-28, 2026-10-25
T2 Arquitectura :t2, 2026-10-26, 2026-11-08
section RA2 · Desarrollo (40 %)
T3 Interfaces y navegación :t3, 2026-11-09, 2026-11-22
T4 Funcionalidades nativas :t4, 2026-11-23, 2026-11-29
T5 Datos locales y remotos :t5, 2026-11-30, 2026-12-20
1ª parcial RA1 + RA2 :milestone, 2026-12-21, 0d
section RA3 · Calidad y despliegue (40 %)
T6 Rendimiento, pruebas y errores :t6, 2027-01-11, 2027-01-24
T7 Despliegue y distribución :t7, 2027-01-25, 2027-02-07
Proyecto final :pf, 2026-12-21, 2027-02-14
Defensa :milestone, 2027-02-15, 0d
section FFEOE
Actividad de validación RA3 (30 %) :ff, 2027-02-16, 2027-05-14
La idea que lo vertebra: cada tema añade una capa a lo que el alumnado ya sabe hacer. Primero el lenguaje y el entorno, luego por qué Flutter (arquitectura), después pantallas, hardware y datos, y al final calidad y publicación. El proyecto final arranca en diciembre y junta todas las capas.
flowchart LR
T1["T1<br/>Dart + entorno"] --> T2["T2<br/>Arquitectura<br/>y diseño (RA1)"]
T2 --> T3["T3<br/>Pantallas"]
T3 --> T4["T4<br/>Hardware"]
T4 --> T5["T5<br/>Datos"]
T5 --> P1{{"1ª parcial"}}
P1 --> T6["T6<br/>Calidad"]
T6 --> T7["T7<br/>Despliegue"]
T7 --> D{{"Defensa"}}
T5 -.-> PF(["Proyecto final"])
T6 -.-> PF
T7 -.-> PF
PF -.-> D
Los siete temas¶
| Tema | Sesiones | RA · CE | Contenido esencial | Prácticas |
|---|---|---|---|---|
| T1 · Entorno, Dart y primera app | 1-3 · 28 sep, 5 oct, 19 oct | RA2 a, c (base) | Instalación y flutter doctor. Dart desde cero (con puentes Java/Kotlin) hasta Future/Stream. La misma app en Android, web y escritorio |
«Hola, plataformas» |
| T2 · Arquitectura y diseño (próximamente) | 4 · 26 oct | RA1 a-e | Nativo, WebView, compilado, interpretado, KMP. Flutter por dentro. Elegir con criterio. Patrones, estructura y mobile-first | Informe de arquitectura y diseño (parejas) |
| T3 · Interfaces y navegación (próximamente) | 5-6 · 9 y 16 nov | RA2 a, c, e · RA1 e | Widgets y layout (desde Compose), listas, estado con setState y provider, navegación, formularios, tema y diseño adaptable |
3.1 Cádiz Market · 3.2 Alta de clientes |
| T4 · Funcionalidades nativas (próximamente) | 7 · 23 nov | RA2 b, c | Plugins, permisos, GPS, cámara, sensores, linterna, audio, ciclo de vida | 4.1 GPS con IA · 4.2 Eureka |
| T5 · Datos locales y remotos (próximamente) | 8-9 · 30 nov, 14 dic | RA2 d | http + JSON, FutureBuilder, errores de red, CRUD contra la API de PMDM. shared_preferences, SQLite. Firebase Auth y Firestore |
5.1 Terremotos y mi API · 5.2 Mis lugares |
| 1ª parcial | 10 · 21 dic | RA1 + RA2 | Prueba teórico-práctica. Arranque del proyecto final (próximamente) | Panel SCRUM |
| T6 · Rendimiento, pruebas y errores (próximamente) | 11-12 · 11 y 18 ene | RA3 a, b, c | DevTools, las 10 reglas de rendimiento, tests unitarios, de widget y de integración, mocks, errores centralizados | 6.1 De malas a buenas prácticas · 6.2 Tests para Cádiz Market |
| T7 · Despliegue y distribución (próximamente) | 13-14 · 25 ene, 1 feb | RA3 d, e | Identidad, firma, flutter build para cada plataforma, web en GitHub Pages / Firebase Hosting, tiendas, CI, documentación |
7.1 Cádiz Market en producción |
| Cierre | 15 · 15 feb | RA3 | Defensa del proyecto final · 2ª parcial · Presentación de la actividad FFEOE | Defensa |
Cuánta práctica hay¶
Cada tema tiene cuatro niveles de práctica, de más guiado a más autónomo:
| Nivel | Qué es | Dónde se hace | Se entrega |
|---|---|---|---|
| Ejercicios rápidos (R) | 5-15 min, justo después de explicar cada apartado | En clase | No: se corrigen en voz alta |
| Guiados (G) | 20-30 min, el profesor y la clase construyen algo entre todos | En clase | No |
| Boletín (B) | 20-30 min cada uno, individuales | Clase y casa | Sí, uno por tema |
| Prácticas | Varias horas, una app completa con rúbrica | Casa | Sí |
| Tema | Rápidos | Guiados | Boletín | Prácticas |
|---|---|---|---|---|
| T1 | 22 | — | 6 | 1 |
| T2 | 4 | — | 5 casos | 1 |
| T3 | 16 | 4 | 10 | 2 |
| T4 | 9 | 1 | 9 | 2 |
| T5 | 12 | 4 | 10 | 2 |
| T6 | 10 | 2 | 8 | 2 |
| T7 | 9 | 2 | 8 | 1 |
| Total | 81 | 13 | 56 | 11 + proyecto |
Cádiz Market, el hilo conductor¶
Una misma app crece a lo largo del curso. Así el alumnado ve cómo evoluciona un proyecto real:
flowchart LR
A["T3<br/>Catálogo, carrito<br/>y clientes"] --> B["T5<br/>Carrito<br/>persistente"]
B --> C["T6<br/>Tests y errores<br/>centralizados"]
C --> D["T7<br/>Firmada, publicada<br/>y con CI"]
Qué se reaprovecha del curso pasado¶
| Actividad del curso pasado (Ionic) | Versión Flutter | Tema |
|---|---|---|
| A2.4 Cádiz Market | Práctica 3.1: catálogo con filtros, stock y carrito con provider |
T3 |
| A3.2 Calculadora y clientes | Práctica 3.2: alta y edición de clientes con validación | T3 |
| A3.3 GPS con IA | Práctica 4.1: servicio de ubicación escrito con IA y revisado | T4 |
| A3.4 Eureka | Práctica 4.2: GPS, sensores y cámara; linterna, texto y canción al tapar el sensor de luz | T4 |
| A4.1 Terremotos + API de PMDM | Práctica 5.1: USGS y CRUD contra la API Spring Boot de PMDM | T5 |
| A4.2 Mis lugares | Práctica 5.2: Firebase + GPS + foto + persistencia local | T5 |
| A4.3 Panel SCRUM | Arranque del proyecto final en GitHub Projects | 1ª parcial |
| A5.1 De malas a buenas prácticas | Práctica 6.1: app lenta a propósito para perfilarla y arreglarla | T6 |
| A5.2 Proyecto final | Proyecto final (próximamente) con requisitos Flutter | T6-T7 |
Calendario de entregas¶
| Se entrega antes de | Actividad |
|---|---|
| Dom 18 oct | Boletín T1 |
| Dom 25 oct | Práctica «Hola, plataformas» |
| Dom 8 nov | Informe de arquitectura (T2) |
| Dom 22 nov | Boletín T3 · Práctica 3.1 Cádiz Market |
| Dom 29 nov | Práctica 3.2 Alta de clientes |
| Dom 6 dic | Boletín T4 · Práctica 4.1 GPS con IA |
| Dom 13 dic | Práctica 4.2 Eureka · Práctica 5.1 Terremotos y mi API |
| Dom 20 dic | Boletín T5 · Práctica 5.2 Mis lugares |
| Lun 21 dic | 1ª parcial · Arranque del proyecto |
| Dom 17 ene | Práctica 6.1 De malas a buenas prácticas |
| Dom 24 ene | Boletín T6 · Práctica 6.2 Tests para Cádiz Market |
| Dom 7 feb | Boletín T7 · Práctica 7.1 Cádiz Market en producción |
| Dom 14 feb | Proyecto final (defensa el lunes 15) |
| Jue 14 may | Actividad de validación de la FFEOE |
Diciembre va cargado
Entre el 6 y el 20 de diciembre se juntan cinco entregas antes de la parcial. Si ves al grupo ahogado, las dos primeras palancas son: hacer los boletines T4 y T5 en clase (los rápidos y guiados ya cubren parte) o pasar la Práctica 5.2 al 10 de enero.
Evaluación¶
Los 15 criterios de evaluación oficiales, con su peso y sus instrumentos, están en Resultados de aprendizaje. Resumen:
| RA | Peso | Cada CE | Instrumentos principales |
|---|---|---|---|
| RA1 | 20 % | 4 % | Informe de arquitectura y diseño (T2) · 1ª parcial · diseño inicial del proyecto · Práctica 3.1 (responsive) |
| RA2 | 40 % | 8 % | Boletines y prácticas de T1, T3, T4 y T5 · 1ª parcial |
| RA3 | 40 % | 8 % | En el aula, 70 %: prácticas 6.1, 6.2 y 7.1 y proyecto final con defensa. En la FFEOE, 30 %: actividad de validación |
Comprobar con el departamento
En la programación, los criterios del RA3 figuran con la actividad de la FFEOE como instrumento. Aquí se propone evaluarlos en el aula y validarlos en la FFEOE (70/30).
La actividad de la FFEOE está descrita en la página del proyecto final (próximamente).
Qué te queda por preparar¶
Todos los temas están escritos. Lo que queda es probarlos en tu equipo una semana antes de darlos y preparar lo que no es código:
| Para antes de… | Tienes que tener listo |
|---|---|
| Lun 28 sep | Aula comprobada. Demo preparada. Guion de la sesión 1 |
| Lun 12 oct | Soluciones del boletín T1 |
| Lun 2 nov | Probar los ejemplos del T3 en tu Flutter. Tener tu propio Cádiz Market hecho (lo vas a enseñar) |
| Lun 16 nov | Probar Eureka en un móvil Android real (el emulador no tiene sensor de luz). Móviles de préstamo |
| Lun 23 nov | Proyecto Firebase de demostración creado. Comprobar si las cuentas del centro permiten Firebase |
| Lun 14 dic | 1ª parcial redactada. JSON del ejercicio B2 del T5 |
| Lun 4 ene | Probar la app lenta de la Práctica 6.1 en modo profile |
| Lun 18 ene | Tu propia clave de firma y un workflow de CI funcionando para enseñarlo |
| Lun 1 feb | Rúbrica de defensa impresa y enunciado de la FFEOE comunicado |
Decisiones tomadas¶
| Decisión | Qué se usa | Por qué |
|---|---|---|
| Gestión de estado | setState y después ChangeNotifier + provider |
Es la opción oficial más sencilla. Riverpod o Bloc añaden mucha complejidad para 7 semanas de RA2 |
| Navegación | Navigator y NavigationBar; go_router solo como ampliación |
Navigator.push se entiende en 10 minutos |
| Base de datos remota | Firebase (Auth + Firestore) y la API de PMDM | Soporte oficial en Flutter, capa gratuita suficiente y continuidad con PMDM |
| Dispositivos | Emulador + Chrome como plan B + móviles Android reales en T4 | Los emuladores pesan mucho; Chrome arranca siempre. Los sensores necesitan móvil real |
| iOS | Solo demostración del profesor | Sin Macs en el aula no se puede compilar para iOS |
| Uso de IA | Permitida y declarada; obligatoria en la Práctica 4.1 | En la parcial y en la defensa no hay IA: tienen que saber explicar su código |
Riesgos y cómo evitarlos¶
| Riesgo | Prevención |
|---|---|
| El primer día se va en instalaciones | Comprobar el aula antes. DartPad y Chrome como plan B |
| Emuladores lentos o que no arrancan | Ejecutar en Chrome o escritorio todo lo que no sea hardware |
| Versiones de paquetes que cambian a mitad de curso | Fijar la versión de Flutter del curso (la del 28 sep) y no actualizar hasta febrero |
| T4 sin móviles con sensores | Pedir que traigan su Android o reservar móviles del departamento |
| El proyecto final se come enero | Hitos quincenales revisados en clase y requisitos claros desde el 21 de diciembre |
| RA2 muy cargado | T3 y T5 tienen dos sesiones. Si hay retraso, diseño adaptable y SQLite pasan a opcionales |