ScrollController class
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). It does not notify its listeners when the list of attached ScrollPositions changes.
Typically used with ListView, GridView, CustomScrollView.
See also:
- ListView, GridView, CustomScrollView, which can be controlled by a ScrollController.
- Scrollable, which is the lower-level widget that creates and associates ScrollPosition objects with ScrollController objects.
- PageController, which is an analogous object for controlling a PageView.
- ScrollPosition, which manages the scroll offset for an individual scrolling widget.
- ScrollNotification and NotificationListener, which can be used to watch the scroll position without using a ScrollController.
- Inheritance
- Object
- ChangeNotifier
- ScrollController
- Implementers
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
- hasListeners → bool
-
Whether any listeners are currently registered. [...]
@protected, 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< void> - 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). [...]
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. [...]
-
toString(
) → String -
Returns a string representation of this object.
override
-
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 ==(
dynamic other) → bool -
The equality operator. [...]
inherited