downloadData method
Implementation
Future<ApiResults?> downloadData({
required String endPoint,
String? fileName,
String? filePath,
Object? data,
Map<String, dynamic>? queryParameters,
String? token,
String? bypass,
String contentType = Headers.formUrlEncodedContentType,
}) async {
dio.options.headers = {
'responseType': ResponseType.bytes,
'Content-Type': contentType,
'bypass': bypass,
};
String dir = (await getApplicationDocumentsDirectory()).path;
String savePath = '$dir/$fileName';
if (await File(savePath).exists()) {
return ApiResults(savePath, 200, "ImageExist");
} else {
try {
log('URL=${dio.options.baseUrl + endPoint}');
log('Posting data=$data');
log('query param data=$queryParameters');
var response = await dio.post(endPoint,
data: data,
queryParameters: queryParameters,
options: Options(responseType: ResponseType.bytes));
log('Response=${response.data}');
if (response.statusCode == 200) {
File file = File(savePath);
var raf = file.openSync(mode: FileMode.write);
raf.writeFromSync(response.data);
await raf.close();
return ApiResults(
savePath, response.statusCode, response.statusMessage);
} else {
return ApiResults(response.data, 0, response.statusMessage);
}
} on SocketException {
return ApiResults("", 0, "");
} on DioException catch (e) {
return ApiResults(data, 0, e.message);
} catch (e) {
return ApiResults(data, 0, strAppSomethingWentWrong);
}
}
}