SliverEnsureSemantics class
A sliver that ensures its sliver child is included in the semantics tree.
This sliver ensures that its child sliver is still visited by the RenderViewport when constructing the semantics tree, and is not clipped out of the semantics tree by the RenderViewport when it is outside the current viewport and outside the cache extent.
The child sliver may still be excluded from the semantics tree if its RenderSliver does not provide a valid RenderSliver.semanticBounds. This sliver does not guarantee its child sliver is laid out.
Be mindful when positioning SliverEnsureSemantics in a CustomScrollView after slivers that build their children lazily, like SliverList. Lazy slivers might underestimate the total scrollable size (scroll extent) before the SliverEnsureSemantics widget. This inaccuracy can cause problems for assistive technologies (e.g., screen readers), which rely on a correct scroll extent to navigate properly; they might fail to scroll accurately to the content wrapped by SliverEnsureSemantics.
To avoid this potential issue and ensure the scroll extent is calculated accurately up to this sliver, it's recommended to use slivers that can determine their extent precisely beforehand. Instead of SliverList, consider using SliverFixedExtentList, SliverVariedExtentList, or SliverPrototypeExtentList. If using SliverGrid, ensure it employs a delegate such as SliverGridDelegateWithFixedCrossAxisCount or SliverGridDelegateWithMaxCrossAxisExtent. Using these alternatives guarantees that the scrollable area's size is known accurately, allowing assistive technologies to function correctly with SliverEnsureSemantics.
To create a local project with this code sample, run:
flutter create --sample=widgets.SliverEnsureSemantics.1 mysample
- Inheritance
-
- Object
- DiagnosticableTree
- Widget
- RenderObjectWidget
- SingleChildRenderObjectWidget
- SliverEnsureSemantics
Constructors
- SliverEnsureSemantics({Key? key, required Widget sliver})
-
Creates a sliver that ensures its sliver child is included in the semantics tree.
const
Properties
- child → Widget?
-
The widget below this widget in the tree.
finalinherited
- hashCode → int
-
The hash code for this object.
no setterinherited
- key → Key?
-
Controls how one widget replaces another widget in the tree.
finalinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
createElement(
) → SingleChildRenderObjectElement -
RenderObjectWidgets always inflate to a RenderObjectElement subclass.
inherited
-
createRenderObject(
BuildContext context) → RenderObject -
Creates an instance of the RenderObject class that this
RenderObjectWidget represents, using the configuration described by this
RenderObjectWidget.
override
-
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
-
didUnmountRenderObject(
covariant RenderObject renderObject) → void -
A render object previously associated with this widget has been removed
from the tree. The given RenderObject will be of the same type as
returned by this object's createRenderObject.
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
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, int wrapWidth = 65}) → String -
Returns a string representation of this node and its descendants.
inherited
-
toStringShallow(
{String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String -
Returns a one-line detailed description of the object.
inherited
-
toStringShort(
) → String -
A short, textual description of this widget.
inherited
-
updateRenderObject(
BuildContext context, covariant RenderObject renderObject) → void -
Copies the configuration described by this RenderObjectWidget to the
given RenderObject, which will be of the same type as returned by this
object's createRenderObject.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited