apply<T extends DataGridRow> method
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,
);
}