findAll method

  1. @protected
  2. @visibleForTesting
Future<List<T>> findAll({
  1. bool? remote,
  2. Map<String, dynamic>? params,
  3. Map<String, String>? headers,
  4. bool? syncLocal,
  5. bool filterLocal(
    1. T
    )?,
  6. OnData<List<T>>? onSuccess,
  7. OnDataError<List<T>>? onError,
})
inherited

Implementation

@protected
@visibleForTesting
Future<List<T>> findAll({
  bool? remote,
  Map<String, dynamic>? params,
  Map<String, String>? headers,
  bool? syncLocal,
  bool Function(T)? filterLocal,
  OnData<List<T>>? onSuccess,
  OnDataError<List<T>>? onError,
}) async {
  _assertInit();
  remote ??= _remote;
  syncLocal ??= false;
  params = await defaultParams & params;
  headers = await defaultHeaders & headers;
  filterLocal ??= (_) => true;

  if (!shouldLoadRemoteAll(remote, params, headers)) {
    final models =
        localAdapter.findAll().where(filterLocal).toImmutableList();
    models.map((m) => m._initialize(adapters, save: true));
    return models;
  }

  final result = await sendRequest(
    baseUrl.asUri / urlForFindAll(params) & params,
    method: methodForFindAll(params),
    headers: headers,
    requestType: DataRequestType.findAll,
    key: internalType,
    onSuccess: (data) async {
      if (syncLocal!) {
        await localAdapter.clear();
      }
      final models = data != null
          ? deserialize(data as Object)
              .models
              .where(filterLocal!)
              .toImmutableList()
          : <T>[];
      return onSuccess?.call(models) ?? models;
    },
    onError: onError,
  );
  return result ?? <T>[];
}