reload method

  1. @override
Future<void> reload({
  1. bool keepOffset = false,
  2. bool keepSelection = false,
})
override

Implementation

@override
Future<void> reload({bool keepOffset = false, bool keepSelection = false}) async {
  final opId = const Uuid().v4();

  _currentOperationId = opId;

  super.reload(keepOffset: keepOffset);

  loading = true;

  final (list, count) = await fetcher(
    currentPage,
    pageSize,
  );

  if (_currentOperationId != opId) {
    return;
  }

  _maxItems = count;
  if (keepOffset && currentPageItems.isNotEmpty) {
    final startOffset = _currentPage * _pageSize;

    final updatedList = List.of(items)
      ..removeRange(startOffset, startOffset + currentPageItems.length)
      ..insertAll(startOffset, list);

    _items = updatedList;
  } else {
    _items = [...items, ...list];
  }

  loading = false;
}