ensureThemeColorReuse method

void ensureThemeColorReuse({
  1. required String page,
  2. required BrownfieldPatternTarget target,
  3. required String tokenQuery,
  4. DslReuseResolutionPolicy policy = DslReuseResolutionPolicy.closestMatch,
})

Replaces a literal color choice with a resolved theme token.

Implementation

void ensureThemeColorReuse({
  required String page,
  required BrownfieldPatternTarget target,
  required String tokenQuery,
  DslReuseResolutionPolicy policy = DslReuseResolutionPolicy.closestMatch,
}) {
  raw((project) {
    final tokenName = resolveDslThemeColorTokenName(
      project,
      query: tokenQuery,
      policy: policy,
    );
    if (tokenName == null) {
      throw StateError(
        'No reusable theme color token resolved for "$tokenQuery".',
      );
    }
    final editor = _pagePatternEditor(page);
    final snapshot = _requirePagePatternSnapshot(project, page);
    final targetRef = _resolvePatternTarget(
      snapshot,
      editor,
      target,
      operation: 'ensureThemeColorReuse(target: ...)',
    );
    editor.update(
      _selectionForResolvedTarget(editor, targetRef),
      (patch) => patch.color(NamedColor(tokenName)),
    );
    _applyBrownfieldWidgetClassEdit(project, editor);
  });
}