import 'dart:developer'; import 'dart:io'; import 'package:core/domain/exceptions/download_file_exception.dart'; import 'package:core/utils/build_utils.dart'; import 'package:path_provider/path_provider.dart'; class FileUtils { Future _getInternalStorageDirPath({ required String nameFile, String? folderPath, String? extensionFile }) async { if (!BuildUtils.isWeb) { String fileDirectory = (await getApplicationDocumentsDirectory()).absolute.path; if (folderPath != null) { fileDirectory = '$fileDirectory/$folderPath'; } Directory directory = Directory(fileDirectory); if (!await directory.exists()) { await directory.create(recursive: true); } fileDirectory = '$fileDirectory/$nameFile'; if (extensionFile != null) { fileDirectory = '$fileDirectory.$extensionFile'; } return fileDirectory; } else { throw DeviceNotSupportedException(); } } Future saveToFile({ required String nameFile, required String content, String? folderPath, String? extensionFile }) async { final internalStorageDirPath = await _getInternalStorageDirPath( nameFile: nameFile, folderPath: folderPath, extensionFile: extensionFile ); final file = File(internalStorageDirPath); log("FileUtils()::saveToFile: $file"); return await file.writeAsString(content, mode: FileMode.append); } Future deleteFile(String filePath) async { final file = File(filePath); if (await file.exists()) { await file.delete(); log("FileUtils()::deleteFile: $file"); } else { log("FileUtils()::deleteFile: File does not exist"); } } Future getContentFromFile({ required String nameFile, String? folderPath, String? extensionFile }) async { final internalStorageDirPath = await _getInternalStorageDirPath( nameFile: nameFile, folderPath: folderPath, extensionFile: extensionFile ); final file = File(internalStorageDirPath); final emailContent = await file.readAsString(); log("FileUtils()::getFromFile: $emailContent"); return emailContent; } Future isFileExisted({ required String nameFile, String? folderPath, String? extensionFile }) async { final internalStorageDirPath = await _getInternalStorageDirPath( nameFile: nameFile, folderPath: folderPath, extensionFile: extensionFile ); return File(internalStorageDirPath).exists(); } } enum ExtensionType { text, json; String get value { switch(this) { case ExtensionType.text: return 'txt'; case ExtensionType.json: return 'json'; } } }