MultiStateSheetController<StateType> class

Controller for managing the state and behavior of a MultiStateSheet.

The MultiStateSheetController enables external interaction with the sheet's snapping behavior, scrolling, animations, and component sizes.

Key Features:

  • External control of snapping and scrolling.
  • Dynamic component size updates.
  • Integration with snapping behaviors for smooth transitions between states.
Inheritance

Constructors

MultiStateSheetController({required SnappingBehavior behavior, required SheetStateMapper<StateType> stateMapper, StateType? initialState, double durationMultiplier = 1.0, double forceMultiplier = 1.25, Curve mainCurve = Curves.decelerate, Curve initialOpenCurve = Curves.easeOutExpo, bool resetContentScrollOnHiddenState = false})
Constructs a MultiStateSheetController with the specified snapping behavior and state mapper.

Properties

actualSheetOffset → double
Returns the offset from the top of the screen to the top of the sheet.
no setter
closestState → StateType
Gets the closest state based on the current offset.
no setter
componentSizes → SheetWidgetSizes
Returns model that represent a sheet component sizes.
no setter
debugLabel → String?
A label that is used in the toString output. Intended to aid with identifying scroll controller instances in debug output.
finalinherited
durationMultiplier → double
Multiplier that adjusts the duration of animations.
final
forceMultiplier → double
Adjusts the force applied to velocity in snapping position calculations.
final
fraction → double
Fraction of the height of sheet to the size of the viewport.
no setter
hasClients → bool
Whether any ScrollPosition objects have attached themselves to the ScrollController using the attach method.
no setterinherited
hashCode → int
The hash code for this object.
no setterinherited
hasListeners → bool
Whether any listeners are currently registered.
no setterinherited
initialComponentSizes → SheetWidgetSizes
Returns model that represent a sheet component sizes at the initial state.
no setter
initialOpenCurve → Curve
The curve used for the initial opening animation of the sheet.
final
initialScrollOffset → double
The initial value to use for offset.
no setterinherited
interpolation → double
Interpolation value between states.
no setter
isAnimatingOpen → bool
Returns true if the sheet is currently animating to the open state.
no setter
isDragging → bool
Returns true if the sheet is currently being dragged.
no setter
isEnabled → bool
Returns true if the sheet is open and enabled.
no setter
keepScrollOffset → bool
Each time a scroll completes, save the current scroll offset with PageStorage and restore it if this controller's scrollable is recreated.
finalinherited
mainCurve → Curve
The animation curve used to animate the sheet.
final
needsSetupBehavior → bool
Returns true if the snapping behavior requires reinitialization.
no setter
offset → double
The current scroll offset of the scrollable widget.
no setterinherited
onAttach → ScrollControllerCallback?
Called when a ScrollPosition is attached to the scroll controller.
finalinherited
onDetach → ScrollControllerCallback?
Called when a ScrollPosition is detached from the scroll controller.
finalinherited
position → _MultiStateSheetScrollPosition<StateType>
Returns the attached ScrollPosition, from which the actual scroll offset of the ScrollView can be obtained.
no setteroverride
positions → Iterable<ScrollPosition>
The currently attached positions.
no setterinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
sheetHeight → double
Gets the height of occupied space by the sheet based on its current offset.
no setter
state → StateType
Gets the current state of the sheet on which is interpolation value relied on and at which it takes the starting point.
no setter
viewportHeight → double
Returns the viewport height available to the sheet.
no setter

Methods

addListener(VoidCallback listener) → void
Register a closure to be called when the object changes.
inherited
animateTo(double offset, {required Duration duration, required Curve curve}) → Future<void>
Animates the position from its current value to the given value.
inherited
attach(ScrollPosition position) → void
Register the given position with this controller.
override
createScrollPosition(ScrollPhysics physics, ScrollContext context, ScrollPosition? oldPosition) → ScrollPosition
Creates a ScrollPosition for use by a Scrollable widget.
override
debugFillDescription(List<String> description) → void
Add additional information to the given description for use by toString.
inherited
detach(ScrollPosition position) → void
Unregister the given position with this controller.
override
dispose() → void
Discards any resources used by the object.
override
jumpTo(double value) → void
Jumps the scroll position from its current value to the given value, without animation, and without checking if the new value is in range.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
notifyListeners() → void
Call all the registered listeners.
inherited
open() → void
Animates the sheet to its initial state.
removeListener(VoidCallback listener) → void
Remove a previously registered closure from the list of closures that are notified when the object changes.
inherited
reset() → void
Resets controller for reuse with a new MultiStateSheet
setState(StateType newState, {Duration? duration, Curve? curve}) → void
Animates the sheet to the specified state.
setupSnappingOffsets() → void
Sets up the snapping offsets based on current state of the controller's extent.
toString() → String
A string representation of this object.
inherited

Operators

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