radiocom-flutter
This is a flutter application for Community Media Stations based in radioco APIs.
Getting Started
This app is supposed to be configurable.
This app has a newsreader, live broadcast , podcast, photo gallery and integrations with twitter and facebook.
Some screenshots
Some screenshots of the iOS Flutter version
Some screenshots of the iOS Flutter version in dark mode:
Download Flutter application for Community Media Stations Source Code on GitHub
This is an Flutter application for Community Media Stations.
https://github.com/ficiverson/radiocom-flutter
20 forks.
69 stars.
1 open issues.
Recent commits:
- bump android version, Fernando Souto
- Merge pull request #20 from miiguelanxo/feature/live-analytics-reliabilityLive analytics, live-stream auto-recovery and accurate session tracking, GitHub
- Log a podcast_play analytics event on podcast playbacklive_play only tracked live-stream starts, so podcast listening was notmeasured. A parallel podcast_play event now fires when a podcast starts,with program, episode and source parameters. Together with live_play(which already carries source), this lets listening be segmented bysource (app vs android_auto) across both live and podcast content.Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>, miiguelanxo
- Crop notification artwork to a centered square to avoid black barsProgramme and cover images are not all square, and audio_service keepsthe artwork's native aspect ratio, so the media notification / lockscreen showed black letterbox/pillarbox bars for non-square images(more visible after the notification re-rendered following an audiointerruption).The artwork is now centre-cropped to a square before being shown: theimage is downloaded, cropped with dart:ui, cached to a file and servedvia a file URI. Already-square images and any failure fall back to theoriginal URL. Results are cached in memory and on disk so each image isprocessed once.Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>, miiguelanxo
- Do not auto-recover the live stream while the user has it pausedThe live auto-recovery fired on ProcessingState.idle/error whenever theplayer was not stopped, which included the paused state. A paused livestream whose connection is dropped by the server could therefore berevived and un-paused against the user's intent.Recovery is now gated on an explicit _userPaused intent flag instead ofthe noisy play/pause state, so it only restarts when the user actuallywants playback: set on pause(), cleared on play()/resume()/stopAndPlay()/stop(). Basing it on intent (not player state) also keeps genuinenetwork recovery working even when a real stream death transitionsthrough a buffering/paused state before going idle.The notification/lock-screen pause is routed through CurrentPlayer.pause()(guarded) so it sets the same intent flag. Pressing pause from the app UIwas already safe because pausing does not put the player in idle.Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>, miiguelanxo
Provides the list of the opensource Flutter apps collection with GitHub repository.