removeWhereEmit method

  1. @override
int removeWhereEmit(
  1. bool test(
    1. T item
    )
)
override

Removes all items that match the predicate. Returns the number of items removed.

Implementation

@override
int removeWhereEmit(bool Function(T item) test) {
  final currentState = state;
  if (currentState is! SmartPaginationLoaded<T>) return 0;

  final updated = List<T>.from(currentState.allItems);
  final originalLength = updated.length;
  updated.removeWhere(test);
  final removedCount = originalLength - updated.length;

  if (removedCount == 0) return 0;

  _onInsertionCallback?.call(updated);

  _refreshDataAge();
  emit(
    currentState.copyWith(
      allItems: updated,
      items: updated,
      lastUpdate: DateTime.now(),
      fetchedAt: _lastFetchTime,
      dataExpiredAt: _getDataExpiredAt(),
    ),
  );
  return removedCount;
}