applyTheme method

  1. @override
void applyTheme(
  1. GeneratedPalette palette
)
override

Apply colors from a GeneratedPalette to this component's state.

This method is called when the theme changes or when a new palette is generated. It should update all color properties based on the palette's values.

Implementation should use ThemeColorMapper.forComponent() for component-specific color resolution.

Implementation

@override
void applyTheme(GeneratedPalette palette) {
  _palette = palette;

  final colors = ThemeColorMapper.forComponent(palette, componentNameGetter);

  // Rest state colors
  restBaseColorLight = colors.restBaseColorLight;
  restTextColorLight = colors.restTextColorLight;
  restIconColorLight = colors.restIconColorLight;
  restBaseColorDark = colors.restBaseColorDark;
  restTextColorDark = colors.restTextColorDark;
  restIconColorDark = colors.restIconColorDark;

  // Hover state colors
  hoverBaseColorLight = colors.hoverBaseColorLight;
  hoverTextColorLight = colors.hoverTextColorLight;
  hoverIconColorLight = colors.hoverIconColorLight;
  hoverBaseColorDark = colors.hoverBaseColorDark;
  hoverTextColorDark = colors.hoverTextColorDark;
  hoverIconColorDark = colors.hoverIconColorDark;

  // Pressed state colors
  pressedBaseColorLight = colors.pressedBaseColorLight;
  pressedTextColorLight = colors.pressedTextColorLight;
  pressedIconColorLight = colors.pressedIconColorLight;
  pressedBaseColorDark = colors.pressedBaseColorDark;
  pressedTextColorDark = colors.pressedTextColorDark;
  pressedIconColorDark = colors.pressedIconColorDark;

  // Disabled state colors
  disabledBaseColorLight = colors.disabledBaseColorLight;
  disabledTextColorLight = colors.disabledTextColorLight;
  disabledIconColorLight = colors.disabledIconColorLight;
  disabledBaseColorDark = colors.disabledBaseColorDark;
  disabledTextColorDark = colors.disabledTextColorDark;
  disabledIconColorDark = colors.disabledIconColorDark;

  // Update border color to match theme accent
  borderColor = colors.accentColorLight;

  // Notify listeners of theme change
  notifyListeners();
}