| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- 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<DefaultSaver> 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<void> 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<bool> exists(String key, {String? extension}) async {
- return await File(_buildPath(key, extension)).exists();
- }
- /// Метод удаления файла
- Future<bool> 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;
- }
- }
- }
|