postRequest static method

dynamic postRequest({
  1. @required dynamic uri,
  2. dynamic baseUrl,
  3. dynamic body,
  4. dynamic header,
  5. dynamic jsonEncoded = true,
  6. bool hasBearer = false,
  7. dynamic onSuccess(
    1. dynamic responseBody
    )?,
  8. dynamic onFailure(
    1. dynamic error
    )?,
  9. Function? onTimeout,
  10. dynamic onConnectionFailed(
    1. dynamic connectionFailed
    )?,
  11. dynamic context,
})

Implementation

static postRequest(
    {@required uri,
    baseUrl, // require for login, and other API url get from Login Response
    body,
    header,
    jsonEncoded = true,
    bool hasBearer = false,
    Function(dynamic responseBody)? onSuccess,
    Function(dynamic error)? onFailure,
    Function? onTimeout,
    Function(dynamic connectionFailed)? onConnectionFailed,
    context}) async {
  bool isConnected = await NetworkConnection.isConnectedNetwork();
  if (!isConnected) {
    if (onConnectionFailed != null) {
      onConnectionFailed("Please check you internet connection");
    }
  }

  if (hasBearer) {
    header = {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer',
    };
  } else {
    header ??= {'Content-Type': 'application/json'};
  }

  if (jsonEncoded) {
    body = jsonEncode(body);
  }

  baseUrl ??= Global.baseUrl;
  var url = baseUrl + uri;

  //make sure body should not have integer values, below body accept only String values.
  //make sure here body only accept Map type data till you not set 'Content-Type': 'application/json',
  http.post(Uri.parse(url), body: body, headers: header).then((response) {
    Log.displayResponse(payload: body, res: response, requestType: 'POST');
    var bodyData = jsonDecode(response.body);

    if (onSuccess != null) {
      if (bodyData['success']) {
        onSuccess(response.body);
      } else {
        if (onFailure != null) {
          onFailure(bodyData);
        }
      }
    }
  }).catchError((error) {
    if (onFailure != null) onFailure(error);
  }).timeout(const Duration(seconds: 20), onTimeout: () {
    if (onTimeout != null) onTimeout();
  });
}