feat(metadata): 元数据补全后主动推送界面刷新

之前标签补全后,收藏/文件列表要退出重进才显示新信息。
- 新增 MetadataEvents 事件总线(MetadataUpdate: path + songs 行)
- MetadataService 写库成功后 publish
- 首页收藏列表订阅:按 path 替换对应 SongItem(标题/艺术家/封面)
- WebDAV 文件列表订阅:按 path 更新 _metaByPath

效果:歌曲播完标签抓取完成后,列表里的那一行自动变成标签信息,
不需要返回重进。
This commit is contained in:
2026-11-01 12:18:21 +08:00
parent 632713d133
commit 6ca31c37ba
4 changed files with 73 additions and 0 deletions
+4
View File
@@ -7,6 +7,7 @@ import 'metadata_model.dart';
import 'metadata_reader.dart';
import 'metadata_normalizer.dart';
import 'metadata_stability.dart';
import '../services/metadata_events.dart';
import 'metadata_cache.dart';
import 'file_provider.dart';
import '../utils/artwork_helper.dart';
@@ -189,6 +190,9 @@ class MetadataService {
await _db.updateSong(songKey, row);
}
// 通知界面局部刷新(收藏/文件列表/歌单等)
MetadataEvents().publish(fileId, row);
final merged = FinalMetadata(
title: row['title'] as String? ?? '',
artist: row['artist'] as String? ?? '',