Controls a scrollable widget.

Scroll controllers are typically stored as member variables in State objects and are reused in each State.build. A single scroll controller can be used to control multiple scrollable widgets, but some operations, such as reading the scroll offset, require the controller to be used with a single scrollable widget.

A scroll controller creates a ScrollPosition to manage the state specific to an individual Scrollable widget. To use a custom ScrollPosition, subclass ScrollController and override createScrollPosition.

A ScrollController is a Listenable. It notifies its listeners whenever any of the attached ScrollPositions notify their listeners (i.e. whenever any of them scroll).

Typically used with ListView, GridView, CustomScrollView.

See also:

Inheritance
Implemented by

Constructors

ScrollController({double initialScrollOffset: 0.0, bool keepScrollOffset: true, String debugLabel })
Creates a controller for a scrollable widget. [...]

Properties

debugLabel String
A label that is used in the toString output. Intended to aid with identifying scroll controller instances in debug output.
final
hasClients bool
Whether any ScrollPosition objects have attached themselves to the ScrollController using the attach method. [...]
read-only
initialScrollOffset double
The initial value to use for offset. [...]
read-only
keepScrollOffset bool
Each time a scroll completes, save the current scroll offset with PageStorage and restore it if this controller's scrollable is recreated. [...]
final
offset double
The current scroll offset of the scrollable widget. [...]
read-only
position ScrollPosition
Returns the attached ScrollPosition, from which the actual scroll offset of the ScrollView can be obtained. [...]
read-only
positions Iterable<ScrollPosition>
The currently attached positions. [...]
@protected, read-only
hashCode int
The hash code for this object. [...]
read-only, inherited
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited

Methods

animateTo(double offset, { Duration duration, Curve curve }) Future<Null>
Animates the position from its current value to the given value. [...]
attach(ScrollPosition position) → void
Register the given position with this controller. [...]
createScrollPosition(ScrollPhysics physics, ScrollContext context, ScrollPosition oldPosition) ScrollPosition
Creates a ScrollPosition for use by a Scrollable widget. [...]
debugFillDescription(List<String> description) → void
Add additional information to the given description for use by toString. [...]
@mustCallSuper
detach(ScrollPosition position) → void
Unregister the given position with this controller. [...]
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 and removeListener will throw after the object is disposed). [...]
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. [...]
toString() String
Returns a string representation of this object.
addListener(VoidCallback listener) → void
Register a closure to be called when the object changes. [...]
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]
inherited
notifyListeners() → void
Call all the registered listeners. [...]
@protected, inherited
removeListener(VoidCallback listener) → void
Remove a previously registered closure from the list of closures that are notified when the object changes. [...]
inherited

Operators

operator ==(other) bool
The equality operator. [...]
inherited