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. After this is called, the object is not in a usable state and should be discarded (calls to addListener will throw after the object is disposed).
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