sort method

List<double> sort(
  1. Map<double, T> rowsById,
  2. SortColumn? sortColumn,
  3. List<DataGridColumn<T>> columns
)

Implementation

List<double> sort(
  Map<double, T> rowsById,
  SortColumn? sortColumn,
  List<DataGridColumn<T>> columns,
) {
  if (sortColumn == null) {
    return rowsById.keys.toList();
  }

  final ids = rowsById.keys.toList();
  final column = columns.firstWhere((c) => c.id == sortColumn.columnId);

  ids.sort((aId, bId) {
    final aValue = _getCellValue(rowsById[aId]!, column);
    final bValue = _getCellValue(rowsById[bId]!, column);

    final comparison = _compareValues(aValue, bValue);

    if (comparison != 0) {
      return sortColumn.direction == SortDirection.ascending
          ? comparison
          : -comparison;
    }
    return 0;
  });

  return ids;
}