Commit Graph
16 Commits
Author SHA1 Message Date
lxh2875931338 c1e720311e feat(ui): 文件列表收藏红心 + 首页收藏绑定 favorites 表
交互调整(按讨论):
- WebDAV 文件列表:整行点击 = 播放(原来的行为),右侧播放按钮改成收藏红心
  已收藏实心红,未收藏空心;点击即写/删 favorites 表
- 首页"我的收藏"改为读 favorites 表 + songs 元数据;
  从文件列表返回时自动刷新
- 收藏项右侧红心改为真正删除(原来只是内存 removeAt)

修复:
- 收藏列表项透明度绑定 _listReveal,首屏为 0 导致条目完全透明
  (收藏成功但看不到)。收藏项改为固定 opacity 1.0。

验证(真机):
  列表点红心 -> favorites 表 +1 -> 返回首页 -> 收藏区出现该条目
2026-10-24 21:38:36 +08:00
lxh2875931338 4a8b1f28db feat(ui): 设置页第一版(缓存管理 / 诊断导出 / 连接状态 / 关于)
设置页此前没有任何入口,且内容全是占位。现在:
- 首页右上角菜单按钮 → 设置页
- 缓存:标签条数、封面数量/占用、临时探测文件占用,一键清理(保留歌单与收藏)
- 诊断:导出 版本/连接/缓存/当前播放/最近错误 到 txt,经 FileProvider 走系统分享
- 连接:显示 WebDAV 地址与用户,支持测试连接、退出登录
- 关于:版本、构建号、播放内核与 UI 许可说明
- 删除未被引用的 FullPlayerPage(与 player_page 重复)

真机验证:设置页正常打开,诊断导出成功调起系统分享面板。
2026-10-24 21:28:22 +08:00
lxh2875931338 9e58d52678 fix(playback): 修复切歌永久假死,并让元数据抓取不再抢播放带宽
问题(后台播一段时间后无法缓冲,点下一首也没反应,只能重启):
1. _isChangingTrack 是没有超时的锁:_playCurrent() 置 true 后,
   只有走完 finally 才会清。mpv 的 open() 在弱网下可能挂很久,
   锁就一直不释放,之后 next()/previous() 全被静默拒绝。
2. 元数据用 dio.download 整文件下载,和 mpv 流式播放抢带宽,
   20Mbps FRP 下播放流只剩一两百 K/s,缓冲长期为 0。
3. 没有订阅 mpv 的 error/buffering,失败无感知、无法自愈。

改动:
- playback_service: open 20s / 控制命令 5s 超时;失败时 stop 回空闲并上抛异常
- audio_service:
  * 去掉「正在切歌就拒绝」的逻辑,改为 latest-wins(epoch 校验,
    旧请求自行放弃,只有最新请求解锁)
  * 播放失败不再吞掉:记录 lastPlaybackError 并 notifyListeners
  * 订阅 stream.error / stream.buffering
  * 缓冲超过 30s 自动重连当前歌曲并 seek 回原位置(2 分钟内最多一次)
- file_provider: 元数据改为 Range 只取头部 2MB,流式写入并在切歌时取消上一请求
- home_page: 去掉重复的 PlaybackService().play()(同一首歌会被 open 两次),
  登录校验提前

验证:dart analyze 无 error;gradlew assembleDebug BUILD SUCCESSFUL。
真机验证待设备重新连接后进行。
2026-10-23 21:04:45 +08:00
lxh2875931338 ad6617592e 修复webdav重新登录后,userID位置错位与页面跳转逻辑错误的重大bug 2026-08-27 22:04:59 +08:00
lxh2875931338 bca1288bd1 追加webdav重新登录的button,还在测试边界情况 2026-08-27 21:52:45 +08:00
lxh2875931338 90aa7d10e9 现在列表底部的信息显示正常了 2026-08-27 21:42:04 +08:00
lxh2875931338 81990385f4 页面层级与返回逻辑实现完成,并且去掉web相关代码支持 2026-08-19 23:27:47 +08:00
lxh2875931338 74a15ca7af 部分界面逻辑调整:播放界面默认最高优先级,其次是独立的miniplayerbar 2026-08-18 23:08:52 +08:00
lxh2875931338 c05398d76f 部分界面调整,把底部的播放控件完整前置 2026-08-18 22:57:29 +08:00
lxh2875931338 7566700bed 现阶段基础播放能力已经实现,接下来将尽全力往UI方向再调整一下 2026-08-17 23:10:24 +08:00
lxh2875931338 725116760a 还在尝试跑通播放状态 2026-08-17 23:00:30 +08:00
lxh2875931338 a6056c7f1a webdav存在自引用问题,现版本修复完成 2026-08-17 22:24:56 +08:00
lxh2875931338 457a9bf1e5 界面部分阶段性达成效果 2026-08-16 21:58:18 +08:00
lxh2875931338 902788c736 目前调通了120全局,准备开始介入播放层,在修bug 2026-08-15 23:06:55 +08:00
lxh2875931338 15683d0bab 初步确定基础外观 2026-08-14 23:30:00 +08:00
lxh2875931338 b997391500 只保留Android支持 2026-08-14 21:39:39 +08:00