loadPage method

  1. @override
Future<List<D>> loadPage({
  1. bool isRefresh = false,
})

Request load page for Data Source

Implementation

@override
Future<List<D>> loadPage({bool isRefresh = false}) async {
  if ((currentKey == null) || isRefresh) {
    if (_cancelableOperation != null && !_cancelableOperation!.isCompleted)
      _cancelableOperation!.cancel();
    _cancelableOperation = CancelableOperation.fromFuture(loadInitial(pageSize));
    final results = await _cancelableOperation!.valueOrCancellation();
    if (autoDetectEndList) {
      isEndList = ((results?.item1.length ?? 0) < pageSize);
    }
    currentKey = results?.item2;
    return results?.item1 ?? [];
  } else {
    _cancelableOperation =  CancelableOperation.fromFuture(loadPageAfter(currentKey!, pageSize));
    final results = await _cancelableOperation!.valueOrCancellation();
    currentKey = results?.item2;
    if (autoDetectEndList) {
      isEndList = ((results?.item1.length ?? 0) < pageSize);
    }
    return results?.item1 ?? [];
  }
}