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

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