TrackingScrollController class
A ScrollController whose initialScrollOffset tracks its most recently updated ScrollPosition.
This class can be used to synchronize the scroll offset of two or more
lazily created scroll views that share a single TrackingScrollController.
It tracks the most recently updated scroll position and reports it as its
initialScrollOffset
.
In this example each PageView page contains a ListView and all three
ListView's share a TrackingScrollController. The scroll offsets of all
three list views will track each other, to the extent that's possible given
the different list lengths.
PageView(
children: <Widget>[
ListView(
controller: _trackingScrollController,
children: List<Widget>.generate(100, (int i) => Text('page 0 item $i')).toList(),
),
ListView(
controller: _trackingScrollController,
children: List<Widget>.generate(200, (int i) => Text('page 1 item $i')).toList(),
),
ListView(
controller: _trackingScrollController,
children: List<Widget>.generate(300, (int i) => Text('page 2 item $i')).toList(),
),
],
)
In this example the _trackingController
would have been created by the
stateful widget that built the widget tree.
- Inheritance
- Object
- ChangeNotifier
- ScrollController
- TrackingScrollController
Constructors
- TrackingScrollController({double initialScrollOffset: 0.0, bool keepScrollOffset: true, String debugLabel })
-
Creates a scroll controller that continually updates its
initialScrollOffset
to match the last scroll notification it received.
Properties
- initialScrollOffset → double
-
Returns the scroll offset of the mostRecentlyUpdatedPosition or, if that
is null, the initial scroll offset provided to the constructor. [...]
read-only, override
- mostRecentlyUpdatedPosition → ScrollPosition
-
The last ScrollPosition to change. Returns null if there aren't any
attached scroll positions, or there hasn't been any scrolling yet, or the
last ScrollPosition to change has since been removed.
read-only
- debugLabel → String
-
A label that is used in the toString output. Intended to aid with
identifying scroll controller instances in debug output.
final, inherited
- hasClients → bool
-
Whether any ScrollPosition objects have attached themselves to the
ScrollController using the attach method. [...]
read-only, inherited
- hashCode → int
-
The hash code for this object. [...]
read-only, inherited
- hasListeners → bool
-
Whether any listeners are currently registered. [...]
@protected, read-only, inherited
- 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, inherited
- offset → double
-
The current scroll offset of the scrollable widget. [...]
read-only, inherited
- position → ScrollPosition
-
Returns the attached ScrollPosition, from which the actual scroll offset
of the ScrollView can be obtained. [...]
read-only, inherited
-
positions
→ Iterable<
ScrollPosition> -
The currently attached positions. [...]
@protected, read-only, inherited
- runtimeType → Type
-
A representation of the runtime type of the object.
read-only, inherited
Methods
-
attach(
ScrollPosition position) → void -
Register the given position with this controller. [...]
override
-
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 and removeListener will throw after the object is
disposed). [...]
override
-
addListener(
VoidCallback listener) → void -
Register a closure to be called when the object changes. [...]
inherited
-
animateTo(
double offset, { Duration duration, Curve curve }) → Future< void> -
Animates the position from its current value to the given value. [...]
inherited
-
createScrollPosition(
ScrollPhysics physics, ScrollContext context, ScrollPosition oldPosition) → ScrollPosition -
Creates a ScrollPosition for use by a Scrollable widget. [...]
inherited
-
debugFillDescription(
List< String> description) → void -
Add additional information to the given description for use by toString. [...]
@mustCallSuper, inherited
-
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 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
-
toString(
) → String -
Returns a string representation of this object.
inherited
Operators
-
operator ==(
dynamic other) → bool -
The equality operator. [...]
inherited