ControlButtonsComponentOptions constructor

const ControlButtonsComponentOptions({
  1. required List<ControlButton> buttons,
  2. MainAxisAlignment alignment = MainAxisAlignment.start,
  3. bool vertical = false,
  4. Color? buttonBackgroundColor,
  5. BoxConstraints? buttonsContainerConstraints,
  6. ControlButtonStateColors? buttonBackgroundColors,
  7. Color? buttonColor,
  8. Color? activeIconColor,
  9. Color? inactiveIconColor,
  10. double? iconSize,
  11. TextStyle? textStyle,
  12. EdgeInsetsGeometry? containerPadding,
  13. EdgeInsetsGeometry? containerMargin,
  14. Decoration? containerDecoration,
  15. AlignmentGeometry? containerAlignment,
  16. Clip containerClipBehavior = Clip.none,
  17. EdgeInsetsGeometry? buttonPadding,
  18. EdgeInsetsGeometry? buttonMargin,
  19. BoxDecoration? buttonDecoration,
  20. BorderRadiusGeometry? buttonBorderRadius,
  21. BoxConstraints? buttonConstraints,
  22. EdgeInsetsGeometry? contentPadding,
  23. MainAxisAlignment? contentMainAxisAlignment,
  24. CrossAxisAlignment? contentCrossAxisAlignment,
  25. double? contentGap,
  26. Widget? alternateIconComponent,
  27. EdgeInsetsGeometry? labelPadding,
  28. EdgeInsetsGeometry? iconPadding,
  29. ControlButtonsContainerBuilder? containerBuilder,
  30. ControlButtonsButtonsBuilder? buttonsBuilder,
  31. ControlButtonsButtonBuilder? buttonBuilder,
  32. ControlButtonsButtonContentBuilder? buttonContentBuilder,
  33. ControlButtonsButtonIconBuilder? iconBuilder,
  34. ControlButtonsButtonLabelBuilder? labelBuilder,
  35. double? gap,
})

Configuration for the control-buttons component displaying a horizontal/vertical action bar.

  • buttons - Array of ControlButton objects; each has name, icon, alternateIcon, onPress, active, show, disabled, customComponent.
  • alignment - Main-axis alignment for button layout (default: MainAxisAlignment.start).
  • vertical - Boolean controlling layout direction: true = vertical (Column), false = horizontal (Row). Default: false.
  • buttonBackgroundColor - Global background color for all buttons; overridden by buttonBackgroundColors or per-button backgroundColor.
  • buttonsContainerConstraints - Optional BoxConstraints for container size limits.
  • buttonBackgroundColors - Map of state-based background colors: {'default': Color, 'pressed': Color, 'disabled': Color}.
  • buttonColor - Global text color for button labels; overridden by per-button color.
  • activeIconColor / inactiveIconColor - Global icon colors for active/inactive states; overridden by per-button activeColor/inActiveColor.
  • iconSize - Global icon size; overridden by per-button iconSize.
  • textStyle - Global text style for labels; overridden by per-button textStyle.
  • containerPadding / containerMargin / containerDecoration / containerAlignment / containerClipBehavior - Container styling options.
  • buttonPadding / buttonMargin / buttonDecoration / buttonBorderRadius / buttonConstraints - Per-button styling options.
  • contentPadding / contentMainAxisAlignment / contentCrossAxisAlignment / contentGap - Icon+label layout options within button.
  • alternateIconComponent - Global custom widget for active icon; overridden by per-button alternateIconWidget.
  • labelPadding / iconPadding - Padding around label/icon.
  • gap - Spacing between buttons in logical pixels.
  • containerBuilder - Override entire container; receives ControlButtonsContainerContext with direction, visibleButtons.
  • buttonsBuilder - Override button layout; receives ControlButtonsButtonsContext with buttons, spacedButtons.
  • buttonBuilder - Override individual button; receives ControlButtonsButtonContext with button, index, isActive.
  • buttonContentBuilder - Override button content (icon+label); receives ControlButtonsButtonContentContext with icon, label.
  • iconBuilder - Override icon widget; receives ControlButtonsButtonIconContext with button, isActive.
  • labelBuilder - Override label widget; receives ControlButtonsButtonLabelContext with button, isActive.

Usage

  1. Component filters buttons by show == true, builds list of visible buttons.
  2. Each button displays icon (or alternateIcon when active == true) above label (if name provided).
  3. Icon color determined by active ? activeIconColor : inactiveIconColor (or per-button overrides).
  4. Label color determined by buttonColor (or per-button color).
  5. Button tap invokes onPress callback (if not disabled).
  6. Layout direction determined by vertical: false = Row, true = Column.
  7. Override via MediasfuUICustomOverrides.controlButtonsComponent to inject custom button designs, animations, or tooltips.

Implementation

const ControlButtonsComponentOptions({
    required this.buttons,
    this.alignment = MainAxisAlignment.start,
    this.vertical = false,
    this.buttonBackgroundColor,
    this.buttonsContainerConstraints,
    this.buttonBackgroundColors,
    this.buttonColor,
    this.activeIconColor,
    this.inactiveIconColor,
    this.iconSize,
    this.textStyle,
    this.containerPadding,
    this.containerMargin,
    this.containerDecoration,
    this.containerAlignment,
    this.containerClipBehavior = Clip.none,
    this.buttonPadding,
    this.buttonMargin,
    this.buttonDecoration,
    this.buttonBorderRadius,
    this.buttonConstraints,
    this.contentPadding,
    this.contentMainAxisAlignment,
    this.contentCrossAxisAlignment,
    this.contentGap,
    this.alternateIconComponent,
  this.labelPadding,
  this.iconPadding,
    this.containerBuilder,
    this.buttonsBuilder,
    this.buttonBuilder,
    this.buttonContentBuilder,
    this.iconBuilder,
    this.labelBuilder,
    this.gap,
  });