sortSelectedFirst<T> static method

Comparator<T> sortSelectedFirst<T>({
  1. required bool isSelected(
    1. T
    ),
  2. Comparator<T>? comparator,
})

Implementation

static Comparator<T> sortSelectedFirst<T>({
  required bool Function(T) isSelected,
  Comparator<T>? comparator,
}) {
  int selectedFirstComparator(a, b) {
    final aIsSelected = isSelected(a);
    final bIsSelected = isSelected(b);
    if (aIsSelected && bIsSelected) {
      return 0;
    } else if (aIsSelected && !bIsSelected) {
      return -1;
    } else if (!aIsSelected && bIsSelected) {
      return 1;
    } else {
      return 0;
    }
  }

  if (comparator != null) {
    return (a, b) {
      final isSelected = selectedFirstComparator(a, b);
      if (isSelected == 0) {
        return comparator(a, b);
      }
      return isSelected;
    };
  }
  return selectedFirstComparator;
}