saveFile method

Future<String> saveFile({
  1. required String name,
  2. Uint8List? bytes,
  3. File? file,
  4. String? filePath,
  5. LinkDetails? link,
  6. String ext = '',
  7. MimeType mimeType = MimeType.other,
  8. String? customMimeType,
  9. Dio? dioClient,
  10. Uint8List transformDioResponse(
    1. dynamic data
    )?,
})

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;
  }
}