saveFile method
saveFile main method which saves the file for all platforms.
name
: Name of your file.
bytes
: Encoded File for saving
Or
file
: File to be saved.
Or
filePath
: Path of file to be saved.
Or
link
: Link & header of file to be saved.
LinkDetails is a model which contains link
& headers
LinkDetails(
link: 'https://www.google.com',
headers: {
'your-header': 'header-value',
},
),
Out of these 4 parameters, only one is required.
ext
: Extension of file.
mimeType (Mainly required for web): MimeType from enum MimeType..
More Mimetypes will be added in future
Implementation
Future<String> saveFile({
required String name,
Uint8List? bytes,
File? file,
String? filePath,
LinkDetails? link,
String ext = '',
MimeType mimeType = MimeType.other,
String? customMimeType,
Dio? dioClient,
Uint8List Function(dynamic data)? transformDioResponse,
}) async {
if (mimeType == MimeType.custom && customMimeType == null) {
throw Exception(
'customMimeType is required when mimeType is MimeType.custom');
}
String extension = Helpers.getExtension(extension: ext);
final isFile = file != null || filePath != null;
if (!isFile) {
bytes = bytes ??
await Helpers.getBytes(
file: file,
filePath: filePath,
link: link,
dioClient: dioClient,
transformDioResponse: transformDioResponse,
);
}
try {
if (isFile) {
directory = await saveFileOnly(
name: name,
file: file ?? File(filePath!),
ext: extension,
mimeType: mimeType,
) ??
_somethingWentWrong;
} else {
_saver = Saver(
fileModel: FileModel(
name: name,
bytes: bytes!,
ext: extension,
mimeType:
mimeType.type.isEmpty ? customMimeType! : mimeType.type));
directory = await _saver.save() ?? _somethingWentWrong;
}
return directory;
} catch (e) {
rethrow;
}
}