post method
Implementation
Future<dynamic> post(String path, {Map<String, dynamic>? data,
bool infiniteTimeout = false, bool overrideBody = false, Map<String, dynamic>? header,}) async {
try {
// Backup current timeout settings
final originalConnectTimeout = _dio.options.connectTimeout;
final originalReceiveTimeout = _dio.options.receiveTimeout;
// Apply infinite timeout if requested
if (infiniteTimeout) {
_dio.options.connectTimeout = Duration.zero; // 0 = infinite
_dio.options.receiveTimeout = Duration.zero;
}
Options? requestOptions;
if(header != null) {
requestOptions = Options(
extra: {
"header": header,
},
);
}
dynamic body;
if (overrideBody) {
body = jsonEncode(data ?? {});
} else if (UFUtils.applyEncryption) {
body = AESUtil.secKeyEncryptWithBodyAppKey(data ?? {});
} else {
body = jsonEncode(data ?? {});
}
final response = await _dio.post(UFUtils.baseUrl + path, data: body, options: requestOptions);
// Restore original timeout settings
if (infiniteTimeout) {
_dio.options.connectTimeout = originalConnectTimeout;
_dio.options.receiveTimeout = originalReceiveTimeout;
}
return response.data;
} catch (e) {
rethrow;
}
}