compareFeatures function

void compareFeatures({
  1. required List<String> oldFeatures,
  2. required List<String> newFeatures,
  3. required void onRemoved(
    1. String feature
    ),
  4. required void onAdded(
    1. String feature
    ),
})

Compares two lists of features (modifiers) and invokes callbacks for added and removed features.

Implementation

void compareFeatures({
  required List<String> oldFeatures,
  required List<String> newFeatures,
  required void Function(String feature) onRemoved,
  required void Function(String feature) onAdded,
}) {
  final oldSet = oldFeatures.toSet();
  final newSet = newFeatures.toSet();

  for (final feature in oldSet) {
    if (!newSet.contains(feature)) {
      onRemoved(feature);
    }
  }

  for (final feature in newSet) {
    if (!oldSet.contains(feature)) {
      onAdded(feature);
    }
  }
}