SExpandableHandles class

A widget that displays an animated arrow icon for expandable menus.

The SExpandableHandles widget can operate in two modes:

Standalone Mode (Simple): When expandsRight and expandsDown are not provided, the widget manages its own internal expansion state. Simply provide onTap callback and the widget will automatically animate between states when tapped or when triggerOnTap changes.

SExpandableHandles(
  width: 70,
  height: 70,
  iconColor: Colors.white,
  onTap: () => print('Tapped!'),
)

Controlled Mode (Advanced): When expandsRight or expandsDown is provided, you control the expansion state via isExpanded. This is useful when the handle needs to reflect the state of an external expandable menu.

SExpandableHandles(
  width: 70,
  height: 70,
  iconColor: Colors.white,
  isExpanded: _isMenuExpanded,
  expandsRight: true,
  onTap: () => setState(() => _isMenuExpanded = !_isMenuExpanded),
)
Inheritance
Available extensions

Constructors

SExpandableHandles({Key? key, required VoidCallback onTap, required double width, required double height, required Color iconColor, bool isExpanded = false, bool? expandsRight, bool? expandsDown, bool? shoulAutodReverseHamburgerAnimationWhenComplete, dynamic onHamburgerStateAnimationCompleted(bool? state)?, bool? triggerOnTap})
const

Properties

expandsDown bool?
If true, menu expands downward (vertical).
final
expandsRight bool?
If true, menu expands to the right (horizontal).
final
hashCode int
The hash code for this object.
no setterinherited
height double
Height of the button container.
final
iconColor Color
Color applied to the arrow icon.
final
isExpanded bool
Whether the menu is currently expanded.
final
key Key?
Controls how one widget replaces another widget in the tree.
finalinherited
onHamburgerStateAnimationCompleted → dynamic Function(bool? state)?
Callback fired when the animation completes.
final
onTap VoidCallback
Callback invoked when the icon is tapped.
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
shoulAutodReverseHamburgerAnimationWhenComplete bool?
Controls the animation state externally (true = reverse/collapse).
final
triggerOnTap bool?
If true, triggers the animation on the next frame.
final
width double
Width of the button container.
final

Methods

addMaterialWidget() Material

Available on Widget, provided by the GenericExtensions extension

addTooltipWidget(String toolTip) Tooltip

Available on Widget, provided by the GenericExtensions extension

animate({Key? key, List<Effect>? effects, AnimateCallback? onInit, AnimateCallback? onPlay, AnimateCallback? onComplete, bool? autoPlay, Duration? delay, AnimationController? controller, Adapter? adapter, double? target, double? value}) → Animate

Available on Widget, provided by the AnimateWidgetExtensions extension

Wraps the target Widget in an Animate instance, and returns the instance for chaining calls. Ex. myWidget.animate() is equivalent to Animate(child: myWidget).
borderRadius([BorderRadiusGeometry? borderRadius]) Widget

Available on Widget, provided by the GenericExtensions extension

boxDecoration([BoxDecoration? boxDecoration]) Widget

Available on Widget, provided by the GenericExtensions extension

colorFilter([ColorFilter? colorFilter]) Widget

Available on Widget, provided by the GenericExtensions extension

set parent widget in center
createElement() StatefulElement
Creates a StatefulElement to manage this widget's location in the tree.
inherited
createState() State<SExpandableHandles>
Creates the mutable state for this widget at a given location in the tree.
override
debugDescribeChildren() List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children.
inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) String
Returns a string representation of this node and its descendants.
inherited
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) String
Returns a one-line detailed description of the object.
inherited
toStringShort() String
A short, textual description of this widget.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited