55 lines
1.5 KiB
Dart
55 lines
1.5 KiB
Dart
// lib/utils/artwork_helper.dart
|
|
import 'dart:io';
|
|
import 'dart:typed_data';
|
|
import 'package:path_provider/path_provider.dart';
|
|
import 'package:flutter/foundation.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();
|
|
debugPrint('🗑️ [ArtworkHelper] deleted artwork: $songKey');
|
|
}
|
|
} catch (e) {
|
|
// ignore
|
|
}
|
|
}
|
|
}
|