getOrderedImportantAttributeIds method

List<String> getOrderedImportantAttributeIds()

Returns all important attributes, ordered by descending importance.

Implementation

List<String> getOrderedImportantAttributeIds() {
  final Map<int, List<String>> map = <int, List<String>>{};
  if (attributeGroups != null) {
    for (final AttributeGroup attributeGroup in attributeGroups!) {
      if (attributeGroup.attributes != null) {
        for (final Attribute attribute in attributeGroup.attributes!) {
          final String attributeId = attribute.id!;
          final String importanceId =
              getImportanceIdForAttributeId(attributeId);
          final int? importanceIndex = _availablePreferenceImportances
              ?.getImportanceIndex(importanceId);
          if (importanceIndex != null) {
            if (importanceIndex == PreferenceImportance.INDEX_NOT_IMPORTANT) {
              continue;
            }
            List<String>? list = map[importanceIndex];
            if (list == null) {
              list = <String>[];
              map[importanceIndex] = list;
            }
            list.add(attributeId);
          }
        }
      }
    }
  }
  final List<String> result = <String>[];
  if (map.isEmpty) {
    return result;
  }
  final List<int> decreasingImportances = <int>[];
  decreasingImportances.addAll(map.keys);
  decreasingImportances.sort((int a, int b) => b - a);
  for (final int importance in decreasingImportances) {
    final List<String>? list = map[importance];
    if (list != null) {
      list.forEach(result.add);
    }
  }
  return result;
}