delete method
Future<T?>
delete(
- Object model, {
- bool remote = true,
- Map<
String, dynamic> ? params, - Map<
String, String> ? headers, - OnSuccessOne<
T> ? onSuccess, - OnErrorOne<
T> ? onError, - DataRequestLabel? label,
inherited
Deletes model
of type T
.
If remote
is true
, it will initiate an HTTP call.
Always deletes from local storage.
Arguments params
and headers
will be merged with
defaultParams and defaultHeaders, respectively.
See also: urlForDelete, methodForDelete.
Implementation
Future<T?> delete(
Object model, {
bool remote = true,
Map<String, dynamic>? params,
Map<String, String>? headers,
OnSuccessOne<T>? onSuccess,
OnErrorOne<T>? onError,
DataRequestLabel? label,
}) async {
params = await defaultParams & params;
headers = await defaultHeaders & headers;
final id = _resolveId(model);
final key = core.getKeyForModelOrId(internalType, model);
label = DataRequestLabel('delete',
type: internalType, id: id.toString(), withParent: label);
if (remote == false) {
log(label, 'deleted in local storage only');
}
if (key != null) {
deleteLocalByKeys({key});
}
if (remote == true && id != null) {
return await sendRequest(
baseUrl.asUri / urlForDelete(id, params) & params,
method: methodForDelete(id, params),
headers: headers,
label: label,
onSuccess: (data, label) {
onSuccess ??= (data, label, _) => this.onSuccess<T>(data, label);
return onSuccess!.call(data, label, this as Adapter<T>);
},
onError: (e, label) async {
onError ??= (e, label, _) => this.onError<T>(e, label);
return onError!.call(e, label, this as Adapter<T>);
},
);
}
return null;
}