Future<String?> downloadFile({ required String url, required String fileName, required String directory, void Function(double progress)? onProgress, });