setItems method

  1. @override
void setItems(
  1. List<T> items
)
override

Sets the list to a completely new set of items.

Implementation

@override
void setItems(List<T> items) {
  final currentState = state;

  final transformedItems = _applyListBuilder(items);
  _onInsertionCallback?.call(transformedItems);

  // Update last fetch time when setting items manually
  _lastFetchTime = DateTime.now();

  if (currentState is SmartPaginationLoaded<T>) {
    emit(
      currentState.copyWith(
        allItems: transformedItems,
        items: transformedItems,
        hasReachedEnd: true,
        lastUpdate: DateTime.now(),
        fetchedAt: _lastFetchTime,
        dataExpiredAt: _dataAge != null ? _lastFetchTime!.add(_dataAge) : null,
      ),
    );
  } else {
    // Create a new loaded state if we're in initial or error state
    final meta = PaginationMeta(
      page: 1,
      pageSize: items.length,
      hasNext: false,
      hasPrevious: false,
    );
    _currentMeta = meta;

    emit(
      SmartPaginationLoaded<T>(
        items: List<T>.from(transformedItems),
        allItems: transformedItems,
        meta: meta,
        hasReachedEnd: true,
        isLoadingMore: false,
        loadMoreError: null,
        fetchedAt: _lastFetchTime,
        dataExpiredAt: _dataAge != null ? _lastFetchTime!.add(_dataAge) : null,
      ),
    );
  }
}