separateSelected method

List<MultiSelectorItem<T>> separateSelected(
  1. List<MultiSelectorItem<T>> list
)

Organizes items into selected/unselected groups.

Parameters:

  • list: Original mixed list of items

Returns: New list with:

  1. Selected items (sorted alphabetically)
  2. Unselected items (sorted alphabetically)

Note: Maintains separate lists but combines them in final output

Implementation

List<MultiSelectorItem<T>> separateSelected(List<MultiSelectorItem<T>> list) {
  List<MultiSelectorItem<T>> selectedItems = [];
  List<MultiSelectorItem<T>> nonSelectedItems = [];

  nonSelectedItems.addAll(list.where((element) => !element.selected));
  nonSelectedItems.sort((a, b) => a.label.compareTo(b.label));
  selectedItems.addAll(list.where((element) => element.selected));
  selectedItems.sort((a, b) => a.label.compareTo(b.label));

  return [...selectedItems, ...nonSelectedItems];
}