import 'dart:io'; import 'package:path_provider/path_provider.dart'; import 'package:path/path.dart' as p; class DefaultSaver { final Directory directory; DefaultSaver._(this.directory); static Future init() async { final dir = await getApplicationDocumentsDirectory(); return DefaultSaver._(dir); } /// Вспомогательный метод для сборки полного пути String _buildPath(String key, String? extension) { final fileName = extension != null ? '$key.$extension' : key; return p.join(directory.path, fileName); } Future saveFile({ required File file, required String key, String? extension, }) async { // Если расширение не передано, попробуем взять его из исходного файла final ext = extension ?? p.extension(file.path).replaceFirst('.', ''); final String fullPath = _buildPath(key, ext); await file.copy(fullPath); } /// 2. Получение файла (например, для Image.file(file)) File getFile(String key, {String? extension}) { return File(_buildPath(key, extension)); } /// 3. Проверка: существует ли файл? Future exists(String key, {String? extension}) async { return await File(_buildPath(key, extension)).exists(); } /// Метод удаления файла Future deleteFile({required String key, String? extension}) async { try { final String fullPath = _buildPath(key, extension); final file = File(fullPath); if (await file.exists()) { await file.delete(); return true; // Файл успешно удален } return false; // Файл не найден } catch (e) { print('Ошибка при удалении файла: $e'); return false; } } }