separateSelected method
Organizes items into selected/unselected groups.
Parameters:
list: Original mixed list of items
Returns: New list with:
- Selected items (sorted alphabetically)
- 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];
}