getOrderedImportantAttributeIds method
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;
}