findOne method
- @protected
- @visibleForTesting
- dynamic model, {
- bool? remote,
- Map<
String, dynamic> ? params, - Map<
String, String> ? headers, - OnData<
T?> ? onSuccess, - OnDataError<
T?> ? onError,
inherited
Implementation
@protected
@visibleForTesting
Future<T?> findOne(
final dynamic model, {
bool? remote,
Map<String, dynamic>? params,
Map<String, String>? headers,
OnData<T?>? onSuccess,
OnDataError<T?>? onError,
}) async {
_assertInit();
if (model == null) {
throw AssertionError('Model must be not null');
}
remote ??= _remote;
params = await defaultParams & params;
headers = await defaultHeaders & headers;
final id = _resolveId(model);
if (!shouldLoadRemoteOne(id, remote, params, headers)) {
final key = graph.getKeyForId(internalType, id,
keyIfAbsent: model is T ? model._key : null);
if (key == null) {
return null;
}
final newModel = localAdapter.findOne(key);
newModel?._initialize(adapters, save: true);
return newModel;
}
return await sendRequest(
baseUrl.asUri / urlForFindOne(id, params) & params,
method: methodForFindOne(id, params),
headers: headers,
requestType: DataRequestType.findOne,
key: StringUtils.typify(internalType, id),
onSuccess: (data) {
final model = data != null
? deserialize(data as Map<String, dynamic>).model
: null;
return onSuccess?.call(model) ?? model;
},
onError: onError,
);
}