ToneSnap_FSX_Flutter/lib/data/storage/love_songs_box.dart
fengshengxiong c7cbdb04be 个人曲库
2024-07-14 16:13:46 +08:00

54 lines
1.2 KiB
Dart

// Author: fengshengxiong
// Date: 2024/5/8
// Description: 喜欢的歌曲
import 'package:get/get.dart';
import 'package:tone_snap/data/models/music_model.dart';
import 'package:tone_snap/data/storage/hive_storage.dart';
class LoveSongsBox {
LoveSongsBox._();
static final LoveSongsBox _instance = LoveSongsBox._();
factory LoveSongsBox() {
return _instance;
}
/// 声明盒子
/// 注意, main函数中这个盒子已经打开, 可以进行存储操作
final _box = getLoveSongsBox();
/// 获取数据
List<MusicModel> getList() {
return _box.values.toList();
}
/// 添加数据
Future<int> addData(MusicModel model) async {
return await _box.add(model);
}
/// 校验该歌曲是否加入喜欢
bool isLove(String videoId) {
var model = getList().firstWhereOrNull((e) => e.videoId == videoId);
return model != null;
}
/// 删除
Future<void> delete(String videoId) async {
var list = getList();
var model = list.firstWhereOrNull((e) => e.videoId == videoId);
if (model != null) {
await _box.delete(list.indexOf(model));
await _box.flush();
}
}
/// 清空所有数据
Future<void> clear() async {
await _box.clear();
await _box.flush();
}
}