postRequest static method
dynamic
postRequest({})
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();
});
}