sortItems<T> function

List<T> sortItems<T>(
  1. ItemRenderer<T> itemRenderer,
  2. Iterable<T> items, {
  3. bool ignoreCase = false,
})

Returns a new list of items sorted according to the string obtained from itemRenderer.

itemRenderer should return a unique string representation for each item.

Implementation

List<T> sortItems<T>(ItemRenderer<T> itemRenderer, Iterable<T> items,
    {bool ignoreCase = false}) {
  // TODO(google): Use new SplayTreeMap<String, T>.fromIterable<T>(...) when
  // generic constructors becomes available.
  var itemsMap = SplayTreeMap<String?, T>();
  if (ignoreCase) {
    for (T item in items) {
      itemsMap[itemRenderer(item)!.toLowerCase()] = item;
    }
  } else {
    for (T item in items) {
      itemsMap[itemRenderer(item)] = item;
    }
  }
  return itemsMap.values.toList();
}