You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter开发直播电台APP如何通过API实现节目图及过往/待播节目动态更新

Flutter直播电台节目列表实现方案

数据层处理

  1. 先通过网络请求拿到后端返回的全量节目排期数据,网络请求直接用dio库即可,支持自定义请求头、参数解析、异常处理,是Flutter生态最成熟的网络请求工具。
  2. 拿到数据后和当前设备时间做比对,对节目做分类筛选:
  • 直播中节目:匹配当前时间 >= 节目开始时间 && 当前时间 <= 节目结束时间的条目,若存在多个直播节目可根据后端返回的优先级取置顶的一条
  • 已结束节目:筛选所有节目结束时间 < 当前时间的条目,按结束时间倒序排序取最新的2条
  • 待播出节目:筛选所有节目开始时间 > 当前时间的条目,按开始时间正序排序取最近的2条
  1. 动态更新逻辑:如果实时性要求不高,用Timer设置1-5分钟的轮询周期请求接口更新数据即可;如果需要实时同步排期改动,可以对接后端的WebSocket服务主动接收更新通知,避免无效轮询。

UI布局实现

整体用Column或者ListView做纵向布局即可:

  • 顶部优先展示当前直播节目卡片,卡片内可放置节目封面图、节目名称、主播名称、「直播中」标识,点击后跳转至音频播放页传入对应节目音频流地址
  • 直播卡片下方放置4个等宽的小节目卡片,前2个为已结束节目,可增加已结束的灰色状态标记,后2个为待播出节目,增加即将播出的蓝色状态标记,点击后可进入对应节目详情页
    如果需要适配横竖屏切换,底部的4个卡片可以用Wrap组件代替固定Row,会自动根据屏幕宽度换行。

音频播放功能实现

双端音频播放直接用audioplayers插件即可,支持在线音频流、本地音频播放,也支持后台播放、进度控制、音量调节等基础功能,完全满足电台类应用的播放需求。如果需要适配系统通知栏播放控制、锁屏媒体按钮操作,可以搭配audio_service插件一起使用,能快速实现系统级的媒体控制适配。

跨页面状态管理

如果需要在节目列表页和播放页共享播放状态、当前播放节目信息,小型项目直接用provider做状态管理即可,学习成本低、代码量小;如果项目后续扩展功能多,也可以用Bloc做更严谨的状态管控。


内容的提问来源于stack exchange,提问作者Maaz Irfan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 02:09:03