SliverChildListDelegate class

A delegate that supplies children for slivers using an explicit list.

Many slivers lazily construct their box children to avoid creating more children than are visible through the Viewport. This delegate provides children using an explicit list, which is convenient but reduces the benefit of building children lazily.

In general building all the widgets in advance is not efficient. It is better to create a delegate that builds them on demand using SliverChildBuilderDelegate or by subclassing SliverChildDelegate directly.

This class is provided for the cases where either the list of children is known well in advance (ideally the children are themselves compile-time constants, for example), and therefore will not be built each time the delegate itself is created, or the list is small, such that it's likely always visible (and thus there is nothing to be gained by building it on demand). For example, the body of a dialog box might fit both of these conditions.

The widgets in the given children list are automatically wrapped in AutomaticKeepAlive widgets if addAutomaticKeepAlives is true (the default) and in RepaintBoundary widgets if addRepaintBoundaries is true (also the default).

See also:



SliverChildListDelegate(List<Widget> children, { bool addAutomaticKeepAlives: true, bool addRepaintBoundaries: true })
Creates a delegate that supplies children for slivers using the given list. [...]


addAutomaticKeepAlives bool
Whether to wrap each child in an AutomaticKeepAlive. [...]
addRepaintBoundaries bool
Whether to wrap each child in a RepaintBoundary. [...]
children List<Widget>
The widgets to display.
estimatedChildCount int
Returns an estimate of the number of children this delegate will build. [...]
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


build(BuildContext context, int index) Widget
Returns the child with the given index. [...]
shouldRebuild(SliverChildListDelegate oldDelegate) bool
Called whenever a new instance of the child delegate class is provided to the sliver. [...]
debugFillDescription(List<String> description) → void
Add additional information to the given description for use by toString.
@mustCallSuper, @protected, inherited
didFinishLayout(int firstIndex, int lastIndex) → void
Called at the end of layout to indicate that layout is now complete. [...]
estimateMaxScrollOffset(int firstIndex, int lastIndex, double leadingScrollOffset, double trailingScrollOffset) double
Returns an estimate of the max scroll extent for all the children. [...]
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]
toString() String
Returns a string representation of this object.


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