delete method

Future<T?> delete(
  1. Object model, {
  2. bool? remote,
  3. Map<String, dynamic>? params,
  4. Map<String, String>? headers,
  5. OnSuccessOne<T>? onSuccess,
  6. OnErrorOne<T>? onError,
  7. DataRequestLabel? label,
})
inherited

Implementation

Future<T?> delete(
  Object model, {
  bool? remote,
  Map<String, dynamic>? params,
  Map<String, String>? headers,
  OnSuccessOne<T>? onSuccess,
  OnErrorOne<T>? onError,
  DataRequestLabel? label,
}) async {
  remote ??= _remote;

  params = await defaultParams & params;
  headers = await defaultHeaders & headers;

  final id = _resolveId(model);
  final key = keyForModelOrId(model);

  label = DataRequestLabel('delete',
      type: internalType, id: id.toString(), withParent: label);

  if (remote == false) {
    log(label, 'deleted in local storage only');
  }
  await localAdapter.delete(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 RemoteAdapter<T>);
      },
      onError: (e, label) async {
        onError ??= (e, label, _) => this.onError<T>(e, label);
        return onError!.call(e, label, this as RemoteAdapter<T>);
      },
    );
  }
  return null;
}