引入部分缓存机制
引入封面图信息 正在进入测试阶段
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
// lib/utils/artwork_helper.dart
|
||||
import 'dart:io';
|
||||
import 'dart:typed_data';
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
|
||||
class ArtworkHelper {
|
||||
static const String _artworkDir = 'artworks';
|
||||
|
||||
/// 保存封面图到本地
|
||||
static Future<String?> saveArtwork(Uint8List data, String songKey) async {
|
||||
try {
|
||||
final dir = await getApplicationDocumentsDirectory();
|
||||
final artworkDir = Directory('${dir.path}/$_artworkDir');
|
||||
if (!await artworkDir.exists()) {
|
||||
await artworkDir.create(recursive: true);
|
||||
}
|
||||
|
||||
final path = '${artworkDir.path}/$songKey.jpg';
|
||||
final file = File(path);
|
||||
await file.writeAsBytes(data);
|
||||
return path;
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/// 获取封面图文件
|
||||
static Future<File?> getArtwork(String songKey) async {
|
||||
try {
|
||||
final dir = await getApplicationDocumentsDirectory();
|
||||
final path = '${dir.path}/$_artworkDir/$songKey.jpg';
|
||||
final file = File(path);
|
||||
if (await file.exists()) {
|
||||
return file;
|
||||
}
|
||||
return null;
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/// 删除封面图
|
||||
static Future<void> deleteArtwork(String songKey) async {
|
||||
try {
|
||||
final dir = await getApplicationDocumentsDirectory();
|
||||
final path = '${dir.path}/$_artworkDir/$songKey.jpg';
|
||||
final file = File(path);
|
||||
if (await file.exists()) {
|
||||
await file.delete();
|
||||
}
|
||||
} catch (e) {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user