sortBy method

void sortBy(
  1. List<String> names, [
  2. List<bool>? isAsc
])

Sort by the specified field name.

The ascending/descending order is specified by the isAsc parameter.

Implementation

void sortBy(List<String> names, [List<bool>? isAsc]){
  sort(
    (a, b){
      int result = 0;
      for(int i = 0; i < names.length; i++){
        String name = names[i];
        bool asc = isAsc == null ? true : isAsc[i];
        Object? aVal = a[name];
        Object? bVal = b[name];
        if(aVal == null && bVal != null){
          result = asc ? -1 : 1;
          break;
        }
        if(aVal != null && bVal == null){
          result = asc ? 1 : -1;
          break;
        }
        if(aVal == null && bVal == null){
          continue;
        }
        if(aVal is Comparable){
          result = aVal.compareTo(bVal);
          if(!asc){
            result = -result;
          }
          if(result != 0){
            break;
          }
        }
      }
      return result;
    }
  );
}