update method

  1. @override
Future<Data?> update(
  1. Id id,
  2. Data? data, [
  3. Map<String, dynamic>? params
])
override

Overwrites a resource.

Implementation

@override
Future<Data?> update(id, data, [Map<String, dynamic>? params]) async {
  var url = baseUrl.replace(
    path: _p.join(baseUrl.path, id.toString()),
    queryParameters: _buildQuery(params),
  );

  var response = await app.sendUnstreamed(
    'POST',
    url,
    _writeHeaders,
    makeBody(data),
  );

  try {
    if (_invalid(response)) {
      if (_onUpdated.hasListener) {
        _onUpdated.addError(failure(response));
      } else {
        throw failure(response);
      }
    }

    var r = deserialize(json.decode(response.body));
    _onUpdated.add(r);
    return r;
  } catch (e, st) {
    if (_onUpdated.hasListener) {
      _onUpdated.addError(e, st);
    } else {
      _log.severe(st);
      throw failure(response, error: e, stack: st);
    }
  }

  return null;
}