buildStateSection method

Widget buildStateSection({
  1. required String stateName,
  2. required bool overrideEnabled,
  3. required ValueChanged<bool> onOverrideChanged,
  4. required Color baseColor,
  5. required Color textColor,
  6. required Color iconColor,
  7. required ValueChanged<Color> onBaseColorChanged,
  8. required ValueChanged<Color> onTextColorChanged,
  9. required ValueChanged<Color> onIconColorChanged,
  10. double? distanceOverride,
  11. double? blurOverride,
  12. double? lightIntensityOverride,
  13. double? darkIntensityOverride,
  14. ValueChanged<double?>? onDistanceOverrideChanged,
  15. ValueChanged<double?>? onBlurOverrideChanged,
  16. ValueChanged<double?>? onLightIntensityOverrideChanged,
  17. ValueChanged<double?>? onDarkIntensityOverrideChanged,
  18. 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,
    ],
  );
}