Dart Simple Live完整指南:如何用Flutter 3步搭建多平台聚合直播应用
2026/9/11 13:48:12 网站建设 项目流程

Dart Simple Live完整指南:如何用Flutter 3步搭建多平台聚合直播应用

【免费下载链接】dart_simple_live简简单单的看直播项目地址: https://gitcode.com/GitHub_Trending/da/dart_simple_live

Dart Simple Live(Simple Live)是一个基于Flutter和Dart的聚合直播工具,统一支持虎牙、斗鱼、哔哩哔哩、抖音四个平台的播放、弹幕与多设备同步,可跑在手机、桌面和电视上。

📌 项目速写

  • 定位:项目口号"简简单单的看直播"是最准确的描述,它不追求大而全,只把"找直播间、看直播、收弹幕"这条链路做扎实。
  • 解决的问题:关注的主播分散在四个平台,原生App各看各的。这个项目用一套统一接口把四家数据收拢到一起,一个App切平台追更。
  • 项目构成:主README 写明四个子项目——simple_live_core核心库(各平台数据与弹幕)、simple_live_app手机/桌面客户端、simple_live_tv_appAndroid TV客户端、simple_live_console控制台工具。
  • 核心依赖:核心库以 dio 做网络请求、web_socket_channel 走弹幕长连接、protobuf 解析抖音弹幕包,虎牙的Tars协议则用仓库内自带的tars_dart包实现。

技术组件版本作用
Flutter3.38跨平台UI框架
simple_live_core1.0.3聚合直播核心库
media_kit^1.2.2视频播放引擎
get^4.7.3状态管理与路由
canvas_danmaku^0.2.7弹幕渲染

🚀 3步跑起来

1. 环境准备:安装 Flutter 3.38 SDK,这是 README 中指定的版本,装好命令行工具后flutter doctor确认设备可用。

2. 获取项目

git clone https://gitcode.com/GitHub_Trending/da/dart_simple_live cd dart_simple_live/simple_live_app && flutter pub get

3. 首次运行:连接手机或模拟器,在simple_live_app目录下直接flutter run即可进入首页。桌面平台在 README 里标注 BETA,建议先用移动端验证流程;不想构建完整客户端的话,可以先跑simple_live_console里的脚本确认核心库数据链路是否通。

🔍 核心能力逐个看

多平台统一数据接口

先解决"一个App怎么取四家数据"的问题。核心库接口 里定义了LiveSite基类,把每个平台的差异收拢成一组固定方法:

class LiveSite { Future<List<LiveCategory>> getCategores(); // 拉取分类 Future<LiveSearchRoomResult> searchRooms(String keyword); // 搜索直播间 Future<LiveRoomDetail> getRoomDetail({required String roomId}); Future<List<LivePlayQuality>> getPlayQualites({required LiveRoomDetail detail}); Future<LivePlayUrl> getPlayUrls({required LiveRoomDetail detail, required LivePlayQuality quality}); LiveDanmaku getDanmaku(); // 获取弹幕实例 }

各平台实现类(BiliBiliSite、DouyinSite 等)只管"怎么调自己的接口",上层UI完全不需要感知当前在哪个平台。简单讲,新增一个平台就是再写一个实现类。配套的模型层(LiveRoomItem、LiveRoomDetail 等)把四家的返回数据归一化成同一套结构,客户端列表页因此可以四个平台混排展示。

弹幕协议处理方式

弹幕是这类工具里最磨人的部分,四家协议各不相同:B站走标准WebSocket,抖音弹幕是Protobuf包且请求需要签名,虎牙连播放地址都要通过Tars长连接协议去换CDN token,斗鱼则有自定义的心跳规则。核心库把这些差异全部封装在LiveDanmaku接口后面,对上层只暴露 onMessage、onReady、onClose 三个回调和统一的 start/stop/heartbeat 方法。

平台弹幕通道特殊处理
哔哩哔哩WebSocketCookie 携带 buvid 设备指纹
抖音WebSocket + Protobuf请求签名(内置JS引擎执行签名脚本)
虎牙Tars 长连接CDN 播放地址换取
斗鱼私有协议心跳保活与消息解码

播放引擎与设备适配

App 层用 media_kit(底层是mpv)做播放,canvas_danmaku 把弹幕叠在画面上,播放器控制器 里还集成了屏幕常亮、横竖屏切换、画中画、音量调节这些看直播的高频操作,并允许在设置页里切换音频输出驱动。弹幕默认开启,可以整体隐藏,也有关键词屏蔽(弹幕护盾)功能;深色模式效果如下:

关注数据跨设备同步

"我的"页面下提供两条同步链路:局域网 SignalR 同步(两台设备扫二维码直连)和远端 WebDAV 同步(接入自己的 WebDAV 服务)。关注的主播、标签和观看历史存在本地 Hive 数据库中,同步本质上是把这份数据打包传到另一台设备再解包,不依赖任何中心化服务器。

⚠️ 实战中的几个关键点

  • 没有现成安装包,只能自己编译:README 开头就声明不提供 Release 包,找不到下载链接很正常,直接flutter buildflutter run自己出包。
  • Flutter版本要对着装:项目指定 3.38,SDK 版本偏低时依赖解析容易失败,先升级工具链再跑 pub get,能省掉一堆莫名其妙的报错。
  • 核心库是本地路径依赖simple_live_app通过path: ../simple_live_core引用核心库,核心库内部还依赖同目录的tars_dart包和一个 git 依赖 dart_quickjs。想拿核心库写自己的客户端,记得把路径改对,别漏了这几个隐式依赖。
  • 登录态影响功能完整度:部分画质和平台请求在设置 Cookie 后更稳,B站内置了扫码登录,抖音源码注释里写明只要有 ttwid 这个Cookie字段就能拿主流画质,不用完整登录态。
  • iOS播放有已知问题:App的README TODO 里挂着"iOS播放问题"和"全屏、非全屏弹幕样式分离",在iOS真机上遇到问题先对照已知清单排查,别急着怀疑自己的环境。

🎬 还能怎么玩

  • 自建轻量客户端:核心库与UI完全解耦,拿它写电视盒子、车机或任意Flutter项目的直播模块,TV版就是现成样例。
  • 终端弹幕监控:用 simple_live_console 直接在终端拉弹幕和直播状态,适合接着写自动化脚本。
  • 接入新平台:实现一个 LiveSite 加一个 LiveDanmaku 子类,就能把新平台挂进整个App。
  • TV+手机组合:TV版和手机版用同一套同步功能共享关注列表,客厅大屏追更。

整个项目的分层思路很清晰:核心库管数据,客户端管体验,声明也写明仅供学习交流。想上手的话,克隆仓库后在 simple_live_app 下跑一次 flutter run,再顺着 simple_live_core/lib/src/interface/ 把 LiveSite 接口读一遍,基本就摸清了整个项目的骨架。

【免费下载链接】dart_simple_live简简单单的看直播项目地址: https://gitcode.com/GitHub_Trending/da/dart_simple_live

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询