Skip to content

feat(music): 新增桌面音乐播放器和音乐库#41

Open
nekoili wants to merge 7 commits into
ikaros-dev:mainfrom
nekoili:feature/music-player
Open

feat(music): 新增桌面音乐播放器和音乐库#41
nekoili wants to merge 7 commits into
ikaros-dev:mainfrom
nekoili:feature/music-player

Conversation

@nekoili

@nekoili nekoili commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

桌面音乐播放器

实现完整的音乐播放功能,包括音乐库浏览和播放。

实现内容

  • lib/api/music/MusicApi.dart — 音乐模块后端 API 对接
  • lib/api/music/SubsonicApi.dart — Subsonic 协议流媒体播放对接
  • lib/music/music_library.dart — 音乐库核心实现
    • 专辑列表页:网格布局展示所有专辑,支持滚动加载
    • 专辑详情页:专辑头部信息 + 歌曲列表
    • 单曲播放跳转:点击歌曲跳转到条目详情页使用现有播放器
    • 全部播放功能
  • lib/layout.dart — 导航栏集成
    • 移动端底部导航新增「音乐」标签
    • 桌面端侧边栏新增「音乐」入口

Closes #(新增桌面音乐播放器)

nekoili and others added 7 commits July 15, 2026 00:38
- 使用 dart_vlc 实现真正的桌面内联音频播放
- 播放队列管理:顺序/随机/单曲循环/列表循环
- 全屏播放界面:封面、标题、进度条、上一首/下一首/播放暂停
- 从专辑详情页直接推送歌曲到播放器,无需跳转到条目页
- 播放队列弹窗:可查看和跳转到队列中的任意歌曲
- 随机播放按钮使用随机起点
- 创建 LRC/A2 格式歌词解析器 (utils/lyrics_parser.dart)
  - 支持标准 LRC 格式 [mm:ss.xx]歌词
  - 支持 A2 增强格式 <mm:ss.xx>逐字<mm:ss.xx>歌词
  - 支持元数据标签解析 (ti/ar/al/by/offset)
  - 逐字时间戳和单词进度计算
- 创建卡拉OK歌词组件 (component/lyrics_widget.dart)
  - 竖排歌词列表模式:当前行高亮 + 渐变色
  - 横排桌面歌词模式:单行卡拉OK效果
  - 逐字跟随播放进度高亮
  - 自动滚动到当前行
- NowPlayingPage 集成
  - 歌词显示/隐藏切换
  - 横排/竖排歌词布局切换
  - 当前播放进度实时同步
  - 从附件资源自动匹配 .lrc 歌词文件
- 移除已不存在的 durationStream 监听器(由 positionStream 替代)
- 修复 PositionState.position/duration 可空类型的赋值
- ProgressBar.total 改为直接传入 _duration
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants