apply<T extends DataGridRow> method

  1. @override
DataGridState<T>? apply<T extends DataGridRow>(
  1. EventContext<T> context
)
override

Apply this event's transformation to the state. Returns the new state, or null if no state change should occur. Can return a Future for async operations.

Implementation

@override
DataGridState<T>? apply<T extends DataGridRow>(EventContext<T> context) {
  final currentContextState = context.state;
  final paginationState = currentContextState.pagination;

  if (!paginationState.enabled) return null;
  if (paginationState.currentPage == 1) return null;

  final newPagination = paginationState.copyWith(currentPage: 1);

  final List<double> newDisplayOrder;
  if (paginationState.serverSide) {
    newDisplayOrder = currentContextState.displayOrder;
  } else {
    final startIndex = newPagination.startIndex(
      currentContextState.totalItems,
    );
    final endIndex = newPagination.endIndex(currentContextState.totalItems);
    final allIds = currentContextState.rowsById.keys.toList();
    newDisplayOrder = allIds.sublist(
      math.min(startIndex, allIds.length),
      math.min(endIndex, allIds.length),
    );
  }

  return currentContextState.copyWith(
    pagination: newPagination,
    displayOrder: newDisplayOrder,
  );
}