buildStateSection method
Widget
buildStateSection({
- required String stateName,
- required bool overrideEnabled,
- required ValueChanged<
bool> onOverrideChanged, - required Color baseColor,
- required Color textColor,
- required Color iconColor,
- required ValueChanged<
Color> onBaseColorChanged, - required ValueChanged<
Color> onTextColorChanged, - required ValueChanged<
Color> onIconColorChanged, - double? distanceOverride,
- double? blurOverride,
- double? lightIntensityOverride,
- double? darkIntensityOverride,
- ValueChanged<
double?> ? onDistanceOverrideChanged, - ValueChanged<
double?> ? onBlurOverrideChanged, - ValueChanged<
double?> ? onLightIntensityOverrideChanged, - ValueChanged<
double?> ? onDarkIntensityOverrideChanged, - List<
Widget> ? additionalControls,
Build controls for a specific state (rest, hover, pressed, disabled)
stateName - 'Rest', 'Hover', 'Pressed', 'Disabled'
overrideEnabled - Current override flag value
onOverrideChanged - Callback when override is toggled
baseColor, textColor, iconColor - Current color values
onBaseColorChanged, onTextColorChanged, onIconColorChanged - Color callbacks
distanceOverride, blurOverride, etc. - Override values
Implementation
Widget buildStateSection({
required String stateName,
required bool overrideEnabled,
required ValueChanged<bool> onOverrideChanged,
required Color baseColor,
required Color textColor,
required Color iconColor,
required ValueChanged<Color> onBaseColorChanged,
required ValueChanged<Color> onTextColorChanged,
required ValueChanged<Color> onIconColorChanged,
double? distanceOverride,
double? blurOverride,
double? lightIntensityOverride,
double? darkIntensityOverride,
ValueChanged<double?>? onDistanceOverrideChanged,
ValueChanged<double?>? onBlurOverrideChanged,
ValueChanged<double?>? onLightIntensityOverrideChanged,
ValueChanged<double?>? onDarkIntensityOverrideChanged,
List<Widget>? additionalControls,
}) {
final stateNameLower = stateName.toLowerCase();
return buildSection(
title: '$stateName State',
subtitle: overrideEnabled
? 'Custom values enabled'
: 'Using common properties',
children: [
// Override toggle
buildSwitch(
'Enable Custom Values',
overrideEnabled,
onOverrideChanged,
),
// Override controls (when enabled)
if (overrideEnabled && onDistanceOverrideChanged != null) ...[
const SizedBox(height: 8),
buildSubsectionHeader('${stateName.toUpperCase()} OVERRIDES'),
buildSlider(
'Distance',
distanceOverride ?? state.distance,
2.0,
20.0,
(v) => onDistanceOverrideChanged(v),
decimals: 1,
),
buildSlider(
'Blur',
blurOverride ?? state.blur,
5.0,
30.0,
(v) => onBlurOverrideChanged?.call(v),
decimals: 1,
),
buildSlider(
'Light Intensity',
lightIntensityOverride ?? state.lightIntensity,
0.0,
1.0,
(v) => onLightIntensityOverrideChanged?.call(v),
decimals: 2,
),
buildSlider(
'Dark Intensity',
darkIntensityOverride ?? state.darkIntensity,
0.0,
1.0,
(v) => onDarkIntensityOverrideChanged?.call(v),
decimals: 2,
),
],
// Color controls
const SizedBox(height: 8),
buildSubsectionHeader('${stateName.toUpperCase()} COLORS${isDarkMode ? ' (DARK)' : ' (LIGHT)'}'),
buildColorPicker('Base Color', baseColor, onBaseColorChanged),
buildColorPicker('Text Color', textColor, onTextColorChanged),
buildColorPicker('Icon Color', iconColor, onIconColorChanged),
// Additional component-specific controls
if (additionalControls != null) ...additionalControls,
],
);
}