两个边界场景: 1) 新建/重命名/删除歌单、加入/移除歌曲后,主页歌单页不刷新 2) 歌单详情页里歌曲补全元数据后,标题/封面不更新 - 新增 PlaylistEvents(void 事件) - PlaylistRepository 的创建/重命名/删除/批量加入/移除后 publish - 主页订阅后重新拉取歌单摘要 - 歌单详情页订阅 MetadataEvents,按 path 就地更新行
22 lines
594 B
Dart
22 lines
594 B
Dart
// lib/services/playlist_events.dart
|
|
import 'dart:async';
|
|
|
|
/// 歌单数据变更事件(新建/重命名/删除/加歌/删歌/排序)。
|
|
///
|
|
/// 主页的歌单页、歌单详情页都靠它实时刷新,
|
|
/// 不用等页面重建。
|
|
class PlaylistEvents {
|
|
static final PlaylistEvents _instance = PlaylistEvents._internal();
|
|
factory PlaylistEvents() => _instance;
|
|
PlaylistEvents._internal();
|
|
|
|
final StreamController<void> _controller =
|
|
StreamController<void>.broadcast();
|
|
|
|
Stream<void> get stream => _controller.stream;
|
|
|
|
void publish() {
|
|
_controller.add(null);
|
|
}
|
|
}
|