unset method
Can be used set an objects variable to undefined rather than null
If object is not saved remotely, set offlineOnly to true to avoid api calls.
Implementation
Future<ParseResponse> unset(String key, {bool offlineOnly = false}) async {
final dynamic object = _objectData[key];
_objectData.remove(key);
_unsavedChanges.remove(key);
_savingChanges.remove(key);
if (offlineOnly) {
return ParseResponse()..success = true;
}
if (objectId == null) {
return ParseResponse()..success = false;
}
try {
final Uri url = getSanitisedUri(_client, '$_path/$objectId');
final String body = '{"$key":{"__op":"Delete"}}';
final ParseNetworkResponse result =
await _client.put(url.toString(), data: body);
final ParseResponse response = handleResponse<ParseObject>(
this, result, ParseApiRQ.unset, _debug, parseClassName);
if (response.success) {
return ParseResponse()..success = true;
} else {
_objectData[key] = object;
_unsavedChanges[key] = object;
_savingChanges[key] = object;
return response;
}
} on Exception catch (e) {
_objectData[key] = object;
_unsavedChanges[key] = object;
_savingChanges[key] = object;
return handleException(e, ParseApiRQ.unset, _debug, parseClassName);
}
}