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