saveFile method
Implementation
Future saveFile(NsgFilePickerObject fileObject, {String? customFileName, String? customPrefix}) async {
FileType fileType = FileType.any;
switch (fileObject.fileType) {
case NsgFilePickerObjectType.image:
fileType = FileType.image;
break;
case NsgFilePickerObjectType.video:
fileType = FileType.video;
break;
case NsgFilePickerObjectType.pdf:
fileType = FileType.any;
break;
default:
fileType = FileType.any;
}
if (!kIsWeb) {
if (!GetPlatform.isAndroid && !GetPlatform.isIOS) {
var fileName = await FilePicker.platform.saveFile(
dialogTitle: tran.save_file,
type: fileType,
allowedExtensions: [extension(fileObject.filePath).replaceAll('.', '')],
);
if (fileName == null) return;
var ext = extension(fileName);
if (ext.isEmpty) {
fileName += extension(fileObject.filePath);
}
dio.Dio io = dio.Dio();
await io.download(fileObject.filePath, fileName, onReceiveProgress: (receivedBytes, totalBytes) {});
//fileName = '/Users/zenalex/Downloads/ttt.docx';
fileName = Uri.encodeFull(fileName);
await launchUrlString('file:$fileName');
} else {
String fileName = customFileName ?? '${customPrefix ?? savePrefix}${extension(fileObject.filePath)}';
Directory appDir;
if (Platform.isIOS) {
appDir = await getApplicationDocumentsDirectory();
} else {
appDir = Directory('/storage/emulated/0/Download');
}
String filePath = '${appDir.path}/$fileName';
dio.Dio io = dio.Dio();
await io.download(fileObject.filePath, filePath, onReceiveProgress: (receivedBytes, totalBytes) {});
}
}
if (kIsWeb) {
try {
final response = await http.get(Uri.parse(fileObject.filePath));
if (response.statusCode == 200) {
final blob = html.Blob([response.bodyBytes]);
final url = html.Url.createObjectUrlFromBlob(blob);
final anchor = html.AnchorElement(href: url)
..setAttribute("download", customFileName ?? '${customPrefix ?? savePrefix}${extension(fileObject.filePath)}');
anchor.click();
html.Url.revokeObjectUrl(url);
} else {
Get.snackbar(tran.failed_download, tran.failed_download_try_again);
}
} catch (e) {
Get.snackbar(tran.error, '${tran.error_file_download}: $e');
}
}
}