downloadData method

Future<ApiResults?> downloadData({
  1. required String endPoint,
  2. String? fileName,
  3. String? filePath,
  4. Object? data,
  5. Map<String, dynamic>? queryParameters,
  6. String? token,
  7. String? bypass,
  8. String contentType = Headers.formUrlEncodedContentType,
})

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