publish method

bool publish(
  1. List<SkinViolation> violations
)

Replaces the live violation set. Returns true when the set actually changed (and listeners were notified), false for a no-op publish.

Publishing an empty list clears the banner — the revert path.

Implementation

bool publish(List<SkinViolation> violations) {
  final changed = !_equal(_violations, violations);
  if (!changed) return false;
  _violations = List.unmodifiable(violations);
  if (_violations.isNotEmpty || _history.isNotEmpty) {
    // Record every real transition, including the clear (the
    // revert receipt), but never a no-op.
    _history.add(List.unmodifiable(violations));
    while (_history.length > _historyLimit) {
      _history.removeAt(0);
    }
  }
  _notify();
  return true;
}