I'm tying to call an PATCH API in my flutter project with help of Dio library. It is an API to update customer details. It is getting 200 status code and getting proper response, but data is not saving in the database. API is working fine when called from POSTMAN. It is just not working in my flutter project. I have tried clearing cache, uninstall and reinstall and tried different login as well. What could be the reason for this weird behavior.
This is API functions
Future updateCustomer(Map<String, dynamic> body) async {
try {
final Response res =
await _dioClient.patch(Endpoints.updateCustomer, data: body);
return true;
} catch (e) {
return false;
}
}
This PATCH function
Future<Response> patch(
String uri, {
data,
Map<String, dynamic>? queryParameters,
Options? options,
CancelToken? cancelToken,
ProgressCallback? onSendProgress,
ProgressCallback? onReceiveProgress,
}) async {
final String key = sprintf('%s+%s', ['get', uri]);
try {
Future _future;
if (running.containsKey(key)) {
_future = running[key]!;
} else {
_future = _dio.patch(
uri,
data: data,
queryParameters: queryParameters,
options: options,
cancelToken: cancelToken,
onSendProgress: onSendProgress,
onReceiveProgress: onReceiveProgress,
);
running[key] = _future;
}
Response res = await _future;
running.remove(key);
return res;
} catch (e) {
running.remove(key);
throw e;
}
}
Calling the API
if (_formKey.currentState!.validate()) {
Map<String, dynamic> body = {
"source_of_fund": sofValue,
"is_the_user_owner": behalfValue,
"political_association": pepValue,
};
var res = await context
.read<MainStore>()
.updateCustomer(body: body);
if (res) {
context.pushReplacementNamed('Nominee');
} else {
print("$res");
}
}
You need to add Cache-control header key.
Like this _dio.options.headers['Cache-Control'] = "no-cache";
Hope this helps you.