fix(metadata): 补上事件订阅,缓存命中也推送一次
上一条只加了字段和回调,listen 没插进去(列表不会刷新)。 另外歌曲元数据在 SQLite 命中时直接 return,也不会发事件—— 导致"标签其实早就在库里、列表却还显示文件名"。 - HomePage / WebDAVFileListPage 补上 stream.listen 与 cancel - MetadataService 的 SQLite 命中分支也 publish 一次(幂等,按 path 覆盖) 验证方式:播放一首收藏里显示文件名的歌 -> 返回主页 -> 该行应变为标签标题。
This commit is contained in:
@@ -119,6 +119,9 @@ class MetadataService {
|
||||
source: 'database',
|
||||
);
|
||||
await _memoryCache.put(fileId, metadata);
|
||||
// 命中也推一次:列表页可能是元数据写入前加载的,
|
||||
// 靠这次事件把那一行补上(幂等,订阅方按 path 覆盖)。
|
||||
MetadataEvents().publish(fileId, dbSong);
|
||||
return metadata;
|
||||
}
|
||||
debugPrint('🔁 [MetadataService] 记录未验证'
|
||||
|
||||
@@ -203,6 +203,7 @@ class _HomePageState extends BaseState<HomePage> {
|
||||
void initState() {
|
||||
super.initState();
|
||||
_scrollController = ScrollController()..addListener(_onScroll);
|
||||
_metaSub = MetadataEvents().stream.listen(_onMetadataUpdate);
|
||||
_initWebDAV();
|
||||
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
@@ -212,6 +213,7 @@ class _HomePageState extends BaseState<HomePage> {
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_metaSub?.cancel();
|
||||
_homePageController.dispose();
|
||||
_scrollController.dispose();
|
||||
super.dispose();
|
||||
|
||||
@@ -48,11 +48,13 @@ class _WebDAVFileListPageState extends BaseState<WebDAVFileListPage> {
|
||||
super.initState();
|
||||
_currentPath = widget.currentPath;
|
||||
AudioService().addListener(_onPlaybackChanged);
|
||||
_metaSub = MetadataEvents().stream.listen(_onMetadataUpdate);
|
||||
_loadDirectory();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_metaSub?.cancel();
|
||||
AudioService().removeListener(_onPlaybackChanged);
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user