apiPost function
dynamic
apiPost(})
Implementation
apiPost(
String route,
data, {
String? token,
String? customRoute,
context,
bool showSuccess = false,
bool showError = false,
String? successMessage,
String? errorMessage,
}) async {
final String response = await rootBundle.loadString('env.json');
final jsonFile = await json.decode(response);
String baseUrl = customRoute ?? await BaissApi.getBaseUrl();
var dio = Dio();
try {
dio.options.connectTimeout = 10000;
dio.options.receiveTimeout = 10000;
dio.options.headers['content-Type'] = 'application/json';
if (token != null) {
dio.options.headers['Authorization'] =
'${jsonFile["API_TOKEN_TYPE"] ?? "Bearer"} $token';
}
if (!jsonFile['APP_PROD_ENV']) {
print("............................... Posting data to : $baseUrl$route");
}
final result = await dio.post(baseUrl + route,
data: data, options: Options(method: "Post"));
if (result.statusCode == 200) {
if (!jsonFile['APP_PROD_ENV']) {
print(
"............................... Data posted to : $baseUrl$route successfuly");
}
if (context != null && showSuccess) {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
duration: const Duration(seconds: 2),
backgroundColor: Colors.green,
content: Text(
successMessage ?? 'Effectué avec success 👌🏽',
textAlign: TextAlign.center,
)));
}
return {
'data': result,
'status': result.statusCode,
};
} else {
return {
'data': result,
'status': result.statusCode,
};
}
} catch (e) {
if (e is DioError) {
if (!jsonFile['APP_PROD_ENV']) {
print(
"............................... ${e.message} where posting data to : $baseUrl$route");
}
if (context != null && showError) {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
duration: const Duration(seconds: 2),
backgroundColor: Colors.red,
content: Text(
errorMessage ?? "Une erreur est suevenue !!",
textAlign: TextAlign.center,
)));
}
return {
'data': e,
'status': e.response!.statusCode,
'error': e.response,
};
}
return {
'data': e,
'status': '',
'error': e.toString(),
};
}
}