2.4 KiB
2.4 KiB
Notas de reproducción de radio con just_audio/audio_service
Referencia interna para futuras correcciones del reproductor de PluriWave. Este archivo está en docs/ y no se incluye en flutter.assets, por lo que no compila dentro de la app.
Hallazgos útiles
AudioPlayer.play()completa cuando la reproducción termina, se pausa o se detiene. En radio en vivo no representa simplemente “ya empezó a sonar”.- Las versiones antiguas de PluriWave que sí cambiaban de emisora usaban el flujo simple de
audio_service+just_audio:stop() -> setUrl() -> play()dentro deplayMediaItem. - La regresión apareció cuando mezclamos dos responsabilidades: usar
handler.emisoraActualcomo estado técnico de audio y también como estado visual inmediato para mostrar el mini reproductor. - En la versión vieja, el audio podía cambiar correctamente aunque
emisoraActualno se usara como “selección visual inmediata”. Para arreglar el primer render del mini reproductor sin romper audio, conviene separar ambos conceptos.
Decisión aplicada en PluriWave
- Restaurar el flujo histórico del handler:
stop -> setUrl -> play. - Mantener la selección visual inmediata en
EstadoRadiomediante una emisora seleccionada propia, separada delemisoraActualinterno del handler. - No usar
setAudioSource(..., preload: false)como reemplazo desetUrl(...): en esta app rompió incluso la primera conexión. - Proteger
EstadoRadio.reproducircon revisión para que una operación vieja no aplique presets/clicks encima de una nueva.
Intentos descartados
setAudioSource(..., preload: false): teóricamente razonable, pero en PluriWave rompió la primera conexión.- Hacer que el handler publique
emisoraActualantes de que el flujo histórico de audio avance: arregla el mini reproductor, pero cambia la semántica que tenían las versiones viejas.
Fuentes consultadas
- just_audio
AudioPlayer.play()API: https://pub.dev/documentation/just_audio/latest/just_audio/AudioPlayer/play.html - just_audio
AudioPlayerAPI general: https://pub.dev/documentation/just_audio/latest/just_audio/AudioPlayer-class.html - Ejemplo de radio en vivo de just_audio: https://gist.github.com/scysys/7f700cd49f09ba788021504e8d3477aa
- Discusión sobre cambiar fuente con audio_service + just_audio: https://stackoverflow.com/questions/70526156/changing-audio-source-in-audio-service-and-just-audio-flutter