feat(mvp): PluriWave Fase 1 — estructura completa de la app #3

Merged
FreeTLab merged 4 commits from feature/mvp-fase1 into main 2026-04-04 18:52:59 +02:00
Owner

Qué incluye este PR

Modelos

  • Emisora: campos completos Radio Browser API (fromApi + fromMap), getter generos

Servicios

  • ServicioRadio: cliente Radio Browser API — populares, tendencias, buscar por nombre/país/idioma/tag
  • ServicioAudio: just_audio + audio_service wrapper — play/pause/stop/toggle, stream de estado, PluriWaveAudioHandler para background
  • ServicioTimer: countdown con fade out gradual 30s, opciones 15/30/60/90 min
  • ServicioFavoritos: actualizado a v2 con campos codec/bitrate/votes/clickcount, migration desde v1

Estado

  • EstadoRadio: ChangeNotifier global con Provider — centraliza reproducción, favoritos, búsqueda, timer

Pantallas

  • PantallaInicio: grid 2 columnas emisoras populares, chips género (filtro activo), tendencias en scroll horizontal, shimmer loading, pull-to-refresh
  • PantallaBuscar: SearchBar + filtros país/idioma, lista resultados compacta
  • PantallaFavoritos: ReorderableListView + Dismissible swipe-to-delete

Widgets

  • TarjetaEmisora: card completa + modo compacto ListTile, CachedNetworkImage, shimmer fallback
  • TarjetaEmisoraShimmer: placeholder de carga
  • MiniReproductor: barra inferior persistente con stream de estado en tiempo real

App shell

  • app.dart: MaterialApp + Provider + NavigationBar (Inicio/Buscar/Favoritos) + dialog timer
  • main.dart: punto de entrada limpio
  • AndroidManifest.xml: permisos INTERNET + FOREGROUND_SERVICE + receivers de audio_service

Dependencias (ya en pubspec.yaml)

  • just_audio, audio_service, audio_session
  • provider, sqflite, http
  • cached_network_image, shimmer, flutter_animate, google_fonts

Notas

  • Merge de feature/bd-favoritos incluido (ServicioFavoritos base)
  • PantallaReproductor completa pendiente (siguiente PR)
  • CI/CD pendiente de feature/cicd-pluriwave (ya tiene PR abierto, no bloqueante)
## Qué incluye este PR ### Modelos - `Emisora`: campos completos Radio Browser API (`fromApi` + `fromMap`), getter `generos` ### Servicios - `ServicioRadio`: cliente Radio Browser API — populares, tendencias, buscar por nombre/país/idioma/tag - `ServicioAudio`: `just_audio` + `audio_service` wrapper — play/pause/stop/toggle, stream de estado, `PluriWaveAudioHandler` para background - `ServicioTimer`: countdown con fade out gradual 30s, opciones 15/30/60/90 min - `ServicioFavoritos`: actualizado a v2 con campos codec/bitrate/votes/clickcount, migration desde v1 ### Estado - `EstadoRadio`: `ChangeNotifier` global con Provider — centraliza reproducción, favoritos, búsqueda, timer ### Pantallas - `PantallaInicio`: grid 2 columnas emisoras populares, chips género (filtro activo), tendencias en scroll horizontal, shimmer loading, pull-to-refresh - `PantallaBuscar`: `SearchBar` + filtros país/idioma, lista resultados compacta - `PantallaFavoritos`: `ReorderableListView` + `Dismissible` swipe-to-delete ### Widgets - `TarjetaEmisora`: card completa + modo compacto ListTile, `CachedNetworkImage`, shimmer fallback - `TarjetaEmisoraShimmer`: placeholder de carga - `MiniReproductor`: barra inferior persistente con stream de estado en tiempo real ### App shell - `app.dart`: `MaterialApp` + `Provider` + `NavigationBar` (Inicio/Buscar/Favoritos) + dialog timer - `main.dart`: punto de entrada limpio - `AndroidManifest.xml`: permisos INTERNET + FOREGROUND_SERVICE + receivers de `audio_service` ## Dependencias (ya en pubspec.yaml) - `just_audio`, `audio_service`, `audio_session` - `provider`, `sqflite`, `http` - `cached_network_image`, `shimmer`, `flutter_animate`, `google_fonts` ## Notas - Merge de `feature/bd-favoritos` incluido (ServicioFavoritos base) - `PantallaReproductor` completa pendiente (siguiente PR) - CI/CD pendiente de `feature/cicd-pluriwave` (ya tiene PR abierto, no bloqueante)
FreeTLab added 4 commits 2026-04-04 17:15:39 +02:00
feat(mvp): PluriWave Fase 1 — estructura completa de la app
Some checks failed
Flutter CI/CD — PluriWave / Test + Build (pull_request) Has been cancelled
e9d1f67aa4
- Modelo Emisora: campos completos Radio Browser API (fromApi + fromMap)
- ServicioRadio: cliente Radio Browser API (populares, tendencias, buscar por nombre/país/idioma/tag)
- ServicioAudio: just_audio + audio_service wrapper (play/pause/stop/toggle, fade, background handler)
- ServicioTimer: countdown con fade out gradual (15/30/60/90 min)
- ServicioFavoritos: actualizado a v2 con campos codec/bitrate/votes/clickcount
- EstadoRadio: ChangeNotifier global con Provider
- PantallaInicio: grid emisoras populares, chips género, shimmer loading, pull-to-refresh
- PantallaBuscar: SearchBar + filtros país/idioma, lista resultados
- PantallaFavoritos: ReorderableListView + swipe-to-delete (Dismissible)
- TarjetaEmisora: card + modo compacto ListTile, cached_network_image, shimmer fallback
- MiniReproductor: barra inferior persistente con stream de estado
- app.dart: MaterialApp + Provider + NavigationBar + timer dialog
- main.dart: punto de entrada limpio
- AndroidManifest.xml: permisos INTERNET + FOREGROUND_SERVICE + audio_service receivers
FreeTLab merged commit 9aa881342d into main 2026-04-04 18:52:59 +02:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: FreeTLab/pluriwave#3