An infinite scrolling list of variably-sized children.
LazyBlock is a general-purpose scrollable list for a large (or infinite) number of children that might not all have the same height. Rather than materializing all of its children, LazyBlock asks its delegate to build child widgets lazily to fill its viewport. LazyBlock caches the widgets it obtains from the delegate as long as they're visible. (See LazyBlockDelegate.shouldRebuild for details about how to evict the cache.)
LazyBlock works by dead reckoning changes to its scrollOffset
from the
top of the first child that is visible in its viewport. If the children
above the first visible child change size, the scrollOffset
might not
return to zero when the LazyBlock is scrolled all the way back to the
start because the height of each child will be subtracted incrementally from
the current scroll position. For this reason, making large changes to the
scrollOffset
is expensive because LazyBlock computes the size of every
child between the old scroll offset and the new scroll offset.
Prefer ScrollableLazyList when all the children have the same size because it can use that property to be more efficient. Prefer ScrollableViewport when there is only one child.
Consider Block if you have a small number of children that will only scroll in unusual circumstances (e.g. when the user's device is smaller than expected).
- Inheritance
- Object
- Widget
- StatelessWidget
- LazyBlock
Constructors
- LazyBlock({Key key, @required LazyBlockDelegate delegate, double initialScrollOffset, Axis scrollDirection: Axis.vertical, ScrollListener onScrollStart, ScrollListener onScroll, ScrollListener onScrollEnd, SnapOffsetCallback snapOffsetCallback, Key scrollableKey, EdgeInsets padding })
-
Creates an infinite scrolling list of variable height children.
Properties
- delegate → LazyBlockDelegate
-
Provides children for this widget.
read-only - initialScrollOffset → double
-
The scroll offset this widget should use when first created.
read-only - onScroll → ScrollListener
-
Called whenever this widget's scroll offset changes.
read-only - onScrollEnd → ScrollListener
-
Called whenever this widget stops scrolling.
read-only - onScrollStart → ScrollListener
-
Called whenever this widget starts to scroll.
read-only - padding → EdgeInsets
-
The amount of space by which to inset the children inside the viewport.
read-only - scrollableKey → Key
-
The key for the Scrollable created by this widget.
read-only - scrollDirection → Axis
-
The axis along which this widget should scroll.
read-only - snapOffsetCallback → SnapOffsetCallback
-
Called to determine the offset to which scrolling should snap, when handling a fling.
read-only - hashCode → int
-
Get a hash code for this object.
read-only, inherited - key → Key
-
Controls how one widget replaces another widget in the tree.
read-only, inherited - runtimeType → Type
-
A representation of the runtime type of the object.
read-only, inherited
Operators
-
operator ==(
other) → bool -
The equality operator.
inherited
Methods
-
build(
BuildContext context) → Widget -
Describes the part of the user interface represented by this widget.
-
createElement(
) → StatelessElement -
Creates a StatelessElement to manage this widget's location in the tree.
inherited -
debugFillDescription(
List<String> description) → void -
Add additional information to the given description for use by toString.
inherited -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a non-existent method or property is accessed.
inherited -
toString(
) → String -
Returns a string representation of this object.
inherited -
toStringShort(
) → String -
A short, textual description of this widget.
inherited