Implementation
List<Attribute> getPopulatedAttributes(
final Product product,
final List<String> attributeIds,
final List<String> excludedAttributeIds,
) {
final List<Attribute> result = <Attribute>[];
final Map<String, Attribute> attributes = product.getAttributes(attributeIds);
for (final String attributeId in attributeIds) {
if (excludedAttributeIds.contains(attributeId)) {
continue;
}
Attribute? attribute = attributes[attributeId];
// Some attributes selected in the user preferences might be unavailable for some products
if (attribute == null) {
continue;
} else if (attribute.id == Attribute.ATTRIBUTE_ADDITIVES) {
// TODO(stephanegigandet): remove that cheat when additives are more standard
final List<String>? additiveNames = product.additives?.names;
attribute = Attribute(
id: attribute.id,
title: attribute.title,
iconUrl: attribute.iconUrl,
descriptionShort: additiveNames == null ? '' : additiveNames.join(', '),
);
}
result.add(attribute);
}
return result;
}