RenderSliverList class
A sliver that places multiple box children in a linear array along the main axis.
Each child is forced to have the SliverConstraints.crossAxisExtent in the cross axis but determines its own main axis extent.
RenderSliverList determines its scroll offset by "dead reckoning" because children outside the visible part of the sliver are not materialized, which means RenderSliverList cannot learn their main axis extent. Instead, newly materialized children are placed adjacent to existing children. If this dead reckoning results in a logical inconsistency (e.g., attempting to place the zeroth child at a scroll offset other than zero), the RenderSliverList generates a SliverGeometry.scrollOffsetCorrection to restore consistency.
If the children have a fixed extent in the main axis, consider using RenderSliverFixedExtentList rather than RenderSliverList because RenderSliverFixedExtentList does not need to perform layout on its children to obtain their extent in the main axis and is therefore more efficient.
See also:
- RenderSliverFixedExtentList, which is more efficient for children with the same extent in the main axis.
- RenderSliverGrid, which places its children in arbitrary positions.
- Inheritance
-
- Object
- RenderObject
- RenderSliver
- RenderSliverMultiBoxAdaptor
- RenderSliverList
Constructors
- RenderSliverList({required RenderSliverBoxChildManager childManager})
- Creates a sliver that places multiple box children in a linear array along the main axis.
Properties
- alwaysNeedsCompositing → bool
-
Whether this render object always needs compositing.
no setterinherited
- attached → bool
-
Whether the render tree this render object belongs to is attached to a PipelineOwner.
no setterinherited
- centerOffsetAdjustment → double
-
For a center sliver, the distance before the absolute zero scroll offset
that this sliver can cover.
no setterinherited
- childCount → int
-
The number of children.
no setterinherited
- childManager → RenderSliverBoxChildManager
-
The delegate that manages the children of this object.
no setterinherited
- constraints → SliverConstraints
-
The layout constraints most recently supplied by the parent.
no setterinherited
- debugCanParentUseSize → bool
-
Whether the parent render object is permitted to use this render object's
size.
no setterinherited
- debugChildIntegrityEnabled ↔ bool
-
Indicates whether integrity check is enabled.
getter/setter pairinherited
- debugCreator ↔ Object?
-
The object responsible for creating this render object.
getter/setter pairinherited
- debugDisposed → bool?
-
Whether this has been disposed.
no setterinherited
- debugDoingThisLayout → bool
-
Whether performLayout for this render object is currently running.
no setterinherited
- debugDoingThisLayoutWithCallback → bool
-
Whether invokeLayoutCallback for this render object is currently running.
no setterinherited
- debugDoingThisPaint → bool
-
Whether paint for this render object is currently running.
no setterinherited
- debugDoingThisResize → bool
-
Whether performResize for this render object is currently running.
no setterinherited
- debugLayer → ContainerLayer?
-
In debug mode, the compositing layer that this render object uses to repaint.
no setterinherited
- debugLayoutParent → RenderObject?
-
The RenderObject that's expected to call layout on this RenderObject
in its performLayout implementation.
no setterinherited
- debugNeedsCompositedLayerUpdate → bool
-
Whether this render object's layer information is dirty.
no setterinherited
- debugNeedsLayout → bool
-
Whether this render object's layout information is dirty.
no setterinherited
- debugNeedsPaint → bool
-
Whether this render object's paint information is dirty.
no setterinherited
- debugSemantics → SemanticsNode?
-
The semantics of this render object.
no setterinherited
- depth → int
-
The depth of this render object in the render tree.
no setterinherited
- firstChild → RenderBox?
-
The first child in the child list.
no setterinherited
- geometry ↔ SliverGeometry?
-
The amount of space this sliver occupies.
getter/setter pairinherited
- hashCode → int
-
The hash code for this object.
no setterinherited
- isRepaintBoundary → bool
-
Whether this render object repaints separately from its parent.
no setterinherited
- lastChild → RenderBox?
-
The last child in the child list.
no setterinherited
- layer ↔ ContainerLayer?
-
The compositing layer that this render object uses to repaint.
getter/setter pairinherited
- needsCompositing → bool
-
Whether we or one of our descendants has a compositing layer.
no setterinherited
- owner → PipelineOwner?
-
The owner for this render object (null if unattached).
no setterinherited
- paintBounds → Rect
-
An estimate of the bounds within which this render object will paint.
Useful for debugging flags such as debugPaintLayerBordersEnabled.
no setterinherited
- parent → RenderObject?
-
The parent of this render object in the render tree.
no setterinherited
- parentData ↔ ParentData?
-
Data for use by the parent render object.
getter/setter pairinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- semanticBounds → Rect
-
The bounding box, in the local coordinate system, of this
object, for accessibility purposes.
no setterinherited
- sizedByParent → bool
-
Whether the constraints are the only input to the sizing algorithm (in
particular, child nodes have no impact).
no setterinherited
Methods
-
add(
RenderBox child) → void -
Append child to the end of this render object's child list.
inherited
-
addAll(
List< RenderBox> ? children) → void -
Add all the children to the end of this render object's child list.
inherited
-
addInitialChild(
{int index = 0, double layoutOffset = 0.0}) → bool -
Called during layout to create and add the child with the given index and
scroll offset.
inherited
-
adoptChild(
RenderObject child) → void -
Called by subclasses when they decide a render object is a child.
inherited
-
applyPaintTransform(
covariant RenderBox child, Matrix4 transform) → void -
Applies the transform that would be applied when painting the given child
to the given matrix.
inherited
-
applyPaintTransformForBoxChild(
RenderBox child, Matrix4 transform) → void -
Utility function for applyPaintTransform for use when the children are
RenderBox widgets.
inherited
-
assembleSemanticsNode(
SemanticsNode node, SemanticsConfiguration config, Iterable< SemanticsNode> children) → void -
Assemble the SemanticsNode for this RenderObject.
inherited
-
attach(
PipelineOwner owner) → void -
Mark this render object as attached to the given owner.
inherited
-
calculateCacheOffset(
SliverConstraints constraints, {required double from, required double to}) → double -
Computes the portion of the region from
from
toto
that is within the cache extent of the viewport, assuming that only the region from the SliverConstraints.cacheOrigin that is SliverConstraints.remainingCacheExtent high is visible, and that the relationship between scroll offsets and paint offsets is linear.inherited -
calculateLeadingGarbage(
{required int firstIndex}) → int -
Returns the number of children preceding the
firstIndex
that need to be garbage collected.inherited -
calculatePaintOffset(
SliverConstraints constraints, {required double from, required double to}) → double -
Computes the portion of the region from
from
toto
that is visible, assuming that only the region from the SliverConstraints.scrollOffset that is SliverConstraints.remainingPaintExtent high is visible, and that the relationship between scroll offsets and paint offsets is linear.inherited -
calculateTrailingGarbage(
{required int lastIndex}) → int -
Returns the number of children following the
lastIndex
that need to be garbage collected.inherited -
childAfter(
RenderBox child) → RenderBox? -
The next child after the given child in the child list.
inherited
-
childBefore(
RenderBox child) → RenderBox? -
The previous child before the given child in the child list.
inherited
-
childCrossAxisPosition(
covariant RenderObject child) → double -
Returns the distance along the cross axis from the zero of the cross axis
in this sliver's paint coordinate space to the nearest side of the given
child.
inherited
-
childMainAxisPosition(
covariant RenderBox child) → double -
Returns the distance from the leading visible edge of the sliver to the
side of the given child closest to that edge.
inherited
-
childScrollOffset(
covariant RenderObject child) → double? -
Returns the scroll offset for the leading edge of the given child.
inherited
-
clearSemantics(
) → void -
Removes all semantics from this render object and its descendants.
inherited
-
collectGarbage(
int leadingGarbage, int trailingGarbage) → void -
Called after layout with the number of children that can be garbage
collected at the head and tail of the child list.
inherited
-
debugAssertChildListIsNonEmptyAndContiguous(
) → bool -
Asserts that the reified child list is not empty and has a contiguous
sequence of indices.
inherited
-
debugAssertDoesMeetConstraints(
) → void -
Verify that the object's constraints are being met. Override this function
in a subclass to verify that your state matches the constraints object.
This function is only called when asserts are enabled (i.e. in debug mode)
and only when needsLayout is false. If the constraints are not met, it
should assert or throw an exception.
inherited
-
debugDescribeChildren(
) → List< DiagnosticsNode> -
Returns a list of DiagnosticsNode objects describing this node's
children.
inherited
-
debugFillProperties(
DiagnosticPropertiesBuilder properties) → void -
Add additional properties associated with the node.
inherited
-
debugPaint(
PaintingContext context, Offset offset) → void -
Override this method to paint debugging information.
inherited
-
debugRegisterRepaintBoundaryPaint(
{bool includedParent = true, bool includedChild = false}) → void -
Called, in debug mode, if isRepaintBoundary is true, when either the
this render object or its parent attempt to paint.
inherited
-
debugResetSize(
) → void -
If a subclass has a "size" (the state controlled by
parentUsesSize
, whatever it is in the subclass, e.g. the actualsize
property of RenderBox), and the subclass verifies that in debug mode this "size" property isn't used when debugCanParentUseSize isn't set, then that subclass should override debugResetSize to reapply the current values of debugCanParentUseSize to that state.inherited -
debugValidateChild(
RenderObject child) → bool -
Checks whether the given render object has the correct runtimeType to be
a child of this render object.
inherited
-
describeApproximatePaintClip(
covariant RenderObject child) → Rect? -
Returns a rect in this object's coordinate system that describes
the approximate bounding box of the clip rect that would be
applied to the given child during the paint phase, if any.
inherited
-
describeForError(
String name, {DiagnosticsTreeStyle style = DiagnosticsTreeStyle.shallow}) → DiagnosticsNode -
Adds a debug representation of a RenderObject optimized for including in
error messages.
inherited
-
describeSemanticsClip(
covariant RenderObject? child) → Rect? -
Returns a rect in this object's coordinate system that describes
which SemanticsNodes produced by the
child
should be included in the semantics tree. SemanticsNodes from thechild
that are positioned outside of this rect will be dropped. Child SemanticsNodes that are positioned inside this rect, but outside of describeApproximatePaintClip will be included in the tree marked as hidden. Child SemanticsNodes that are inside of both rect will be included in the tree as regular nodes.inherited -
describeSemanticsConfiguration(
SemanticsConfiguration config) → void -
Report the semantics of this node, for example for accessibility purposes.
inherited
-
detach(
) → void -
Mark this render object as detached from its PipelineOwner.
inherited
-
dispose(
) → void -
Release any resources held by this render object.
inherited
-
dropChild(
RenderObject child) → void -
Called by subclasses when they decide a render object is no longer a child.
inherited
-
getAbsoluteSize(
) → Size -
This returns the absolute Size of the sliver.
inherited
-
getAbsoluteSizeRelativeToOrigin(
) → Size -
This returns a Size with dimensions relative to the leading edge of the
sliver, specifically the same offset that is given to the paint method.
This means that the dimensions may be negative.
inherited
-
getTransformTo(
RenderObject? target) → Matrix4 -
Applies the paint transform from this RenderObject to the
target
RenderObject.inherited -
handleEvent(
PointerEvent event, covariant HitTestEntry< HitTestTarget> entry) → void -
Override this method to handle pointer events that hit this render object.
inherited
-
hitTest(
SliverHitTestResult result, {required double mainAxisPosition, required double crossAxisPosition}) → bool -
Determines the set of render objects located at the given position.
inherited
-
hitTestBoxChild(
BoxHitTestResult result, RenderBox child, {required double mainAxisPosition, required double crossAxisPosition}) → bool -
Utility function for hitTestChildren for use when the children are
RenderBox widgets.
inherited
-
hitTestChildren(
SliverHitTestResult result, {required double mainAxisPosition, required double crossAxisPosition}) → bool -
Override this method to check whether any children are located at the
given position.
inherited
-
hitTestSelf(
{required double mainAxisPosition, required double crossAxisPosition}) → bool -
Override this method if this render object can be hit even if its
children were not hit.
inherited
-
indexOf(
RenderBox child) → int -
Returns the index of the given child, as given by the
SliverMultiBoxAdaptorParentData.index field of the child's parentData.
inherited
-
insert(
RenderBox child, {RenderBox? after}) → void -
Insert child into this render object's child list after the given child.
inherited
-
insertAndLayoutChild(
BoxConstraints childConstraints, {required RenderBox? after, bool parentUsesSize = false}) → RenderBox? -
Called during layout to create, add, and layout the child after
the given child.
inherited
-
insertAndLayoutLeadingChild(
BoxConstraints childConstraints, {bool parentUsesSize = false}) → RenderBox? -
Called during layout to create, add, and layout the child before
firstChild.
inherited
-
invokeLayoutCallback<
T extends Constraints> (LayoutCallback< T> callback) → void -
Allows mutations to be made to this object's child list (and any
descendants) as well as to any other dirty nodes in the render tree owned
by the same PipelineOwner as this object. The
callback
argument is invoked synchronously, and the mutations are allowed only during that callback's execution.inherited -
layout(
Constraints constraints, {bool parentUsesSize = false}) → void -
Compute the layout for this render object.
inherited
-
markNeedsCompositedLayerUpdate(
) → void -
Mark this render object as having changed a property on its composited
layer.
inherited
-
markNeedsCompositingBitsUpdate(
) → void -
Mark the compositing state for this render object as dirty.
inherited
-
markNeedsLayout(
) → void -
Mark this render object's layout information as dirty, and either register
this object with its PipelineOwner, or defer to the parent, depending on
whether this object is a relayout boundary or not respectively.
inherited
-
markNeedsLayoutForSizedByParentChange(
) → void -
Mark this render object's layout information as dirty (like
markNeedsLayout), and additionally also handle any necessary work to
handle the case where sizedByParent has changed value.
inherited
-
markNeedsPaint(
) → void -
Mark this render object as having changed its visual appearance.
inherited
-
markNeedsSemanticsUpdate(
) → void -
Mark this node as needing an update to its semantics description.
inherited
-
markParentNeedsLayout(
) → void -
Mark this render object's layout information as dirty, and then defer to
the parent.
inherited
-
move(
RenderBox child, {RenderBox? after}) → void -
Move the given
child
in the child list to be after another child.inherited -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
paint(
PaintingContext context, Offset offset) → void -
Paint this render object into the given context at the given offset.
inherited
-
paintExtentOf(
RenderBox child) → double -
Returns the dimension of the given child in the main axis, as given by the
child's RenderBox.size property. This is only valid after layout.
inherited
-
paintsChild(
covariant RenderBox child) → bool -
Whether the given child would be painted if paint were called.
inherited
-
performLayout(
) → void -
Do the work of computing the layout for this render object.
override
-
performResize(
) → void -
Updates the render objects size using only the constraints.
inherited
-
reassemble(
) → void -
Cause the entire subtree rooted at the given RenderObject to be marked
dirty for layout, paint, etc, so that the effects of a hot reload can be
seen, or so that the effect of changing a global debug flag (such as
debugPaintSizeEnabled) can be applied.
inherited
-
redepthChild(
RenderObject child) → void -
Adjust the depth of the given
child
to be greater than this node's own depth.inherited -
redepthChildren(
) → void -
Adjust the depth of this node's children, if any.
inherited
-
remove(
RenderBox child) → void -
Remove this child from the child list.
inherited
-
removeAll(
) → void -
Remove all their children from this render object's child list.
inherited
-
replaceRootLayer(
OffsetLayer rootLayer) → void -
Replace the layer. This is only valid for the root of a render
object subtree (whatever object scheduleInitialPaint was
called on).
inherited
-
scheduleInitialLayout(
) → void -
Bootstrap the rendering pipeline by scheduling the very first layout.
inherited
-
scheduleInitialPaint(
ContainerLayer rootLayer) → void -
Bootstrap the rendering pipeline by scheduling the very first paint.
inherited
-
scheduleInitialSemantics(
) → void -
Bootstrap the semantics reporting mechanism by marking this node
as needing a semantics update.
inherited
-
sendSemanticsEvent(
SemanticsEvent semanticsEvent) → void -
Sends a SemanticsEvent associated with this render object's SemanticsNode.
inherited
-
setupParentData(
covariant RenderObject child) → void -
Override to setup parent data correctly for your children.
inherited
-
showOnScreen(
{RenderObject? descendant, Rect? rect, Duration duration = Duration.zero, Curve curve = Curves.ease}) → void -
Attempt to make (a portion of) this or a descendant RenderObject visible
on screen.
inherited
-
toDiagnosticsNode(
{String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode -
Returns a debug representation of the object that is used by debugging
tools and by DiagnosticsNode.toStringDeep.
inherited
-
toString(
{DiagnosticLevel minLevel = DiagnosticLevel.info}) → String -
A string representation of this object.
inherited
-
toStringDeep(
{String prefixLineOne = '', String? prefixOtherLines = '', DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String -
Returns a description of the tree rooted at this node.
If the prefix argument is provided, then every line in the output
will be prefixed by that string.
inherited
-
toStringShallow(
{String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String -
Returns a one-line detailed description of the render object.
This description is often somewhat long.
inherited
-
toStringShort(
) → String -
Returns a human understandable name.
inherited
-
updateCompositedLayer(
{required covariant OffsetLayer? oldLayer}) → OffsetLayer -
Update the composited layer owned by this render object.
inherited
-
visitChildren(
RenderObjectVisitor visitor) → void -
Calls visitor for each immediate child of this render object.
inherited
-
visitChildrenForSemantics(
RenderObjectVisitor visitor) → void -
Called when collecting the semantics of this node.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited