WidgetSpan class
An immutable widget that is embedded inline within text.
The child property is the widget that will be embedded. Children are constrained by the width of the paragraph.
The child property may contain its own Widget children (if applicable), including Text and RichText widgets which may include additional WidgetSpans. Child Text and RichText widgets will be laid out independently and occupy a rectangular space in the parent text layout.
WidgetSpans will be ignored when passed into a TextPainter directly. To properly layout and paint the child widget, WidgetSpan should be passed into a Text.rich widget.
A card with
link
Hello World!
embedded inline within a TextSpan tree.
const Text.rich(
TextSpan(
children: <InlineSpan>[
TextSpan(text: 'Flutter is'),
WidgetSpan(
child: SizedBox(
width: 120,
height: 50,
child: Card(
child: Center(
child: Text('Hello World!')
)
),
)
),
TextSpan(text: 'the best!'),
],
)
)
WidgetSpan contributes the semantics of the WidgetSpan.child to the semantics tree.
See also:
- TextSpan, a node that represents text in an InlineSpan tree.
- Text, a widget for showing uniformly-styled text.
- RichText, a widget for finer control of text rendering.
- TextPainter, a class for painting InlineSpan objects on a Canvas.
- Inheritance
-
- Object
- DiagnosticableTree
- InlineSpan
- PlaceholderSpan
- WidgetSpan
- Annotations
Constructors
- WidgetSpan({required Widget child, PlaceholderAlignment alignment = ui.PlaceholderAlignment.bottom, TextBaseline? baseline, TextStyle? style})
-
Creates a WidgetSpan with the given values.
const
Properties
- alignment → PlaceholderAlignment
-
How the placeholder aligns vertically with the text.
finalinherited
- baseline → TextBaseline?
-
The TextBaseline to align against when using ui.PlaceholderAlignment.baseline,
ui.PlaceholderAlignment.aboveBaseline, and ui.PlaceholderAlignment.belowBaseline.
finalinherited
- child → Widget
-
The widget to embed inline within text.
final
- hashCode → int
-
The hash code for this object.
no setteroverride
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- style → TextStyle?
-
The TextStyle to apply to this span.
finalinherited
Methods
-
build(
ParagraphBuilder builder, {TextScaler textScaler = TextScaler.noScaling, List< PlaceholderDimensions> ? dimensions}) → void -
Adds a placeholder box to the paragraph builder if a size has been
calculated for the widget.
override
-
codeUnitAt(
int index) → int? -
Returns the UTF-16 code unit at the given
index
in the flattened string.inherited -
codeUnitAtVisitor(
int index, Accumulator offset) → int? -
Performs the check at each InlineSpan for if the
index
falls within the range of the span and returns the corresponding code unit. Returns null otherwise.override -
compareTo(
InlineSpan other) → RenderComparison -
Describe the difference between this span and another, in terms of
how much damage it will make to the rendering. The comparison is deep.
override
-
computeSemanticsInformation(
List< InlineSpanSemanticsInformation> collector) → void -
Walks the InlineSpan tree and accumulates a list of
InlineSpanSemanticsInformation objects.
inherited
-
computeToPlainText(
StringBuffer buffer, {bool includeSemanticsLabels = true, bool includePlaceholders = true}) → void -
PlaceholderSpans are flattened to a
0xFFFC
object replacement character in the plain text representation whenincludePlaceholders
is true.inherited -
debugAssertIsValid(
) → bool -
In debug mode, throws an exception if the object is not in a
valid configuration. Otherwise, returns true.
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.
override
-
getSemanticsInformation(
) → List< InlineSpanSemanticsInformation> -
Flattens the InlineSpan tree to a list of
InlineSpanSemanticsInformation objects.
inherited
-
getSpanForPosition(
TextPosition position) → InlineSpan? -
Returns the text span that contains the given position in the text.
override
-
getSpanForPositionVisitor(
TextPosition position, Accumulator offset) → InlineSpan? -
Performs the check at each InlineSpan for if the
position
falls within the range of the span and returns the span if it does.override -
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
-
toPlainText(
{bool includeSemanticsLabels = true, bool includePlaceholders = true}) → String -
Flattens the InlineSpan tree into a single string.
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 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 brief description of this object, usually just the runtimeType and the
hashCode.
inherited
-
visitChildren(
InlineSpanVisitor visitor) → bool -
Calls
visitor
on this WidgetSpan. There are no children spans to walk.override -
visitDirectChildren(
InlineSpanVisitor visitor) → bool -
Calls
visitor
for each immediate child of this InlineSpan.override
Operators
-
operator ==(
Object other) → bool -
The equality operator.
override
Static Methods
-
extractFromInlineSpan(
InlineSpan span, TextScaler textScaler) → List< Widget> - Helper function for extracting WidgetSpans in preorder, from the given InlineSpan as a list of widgets.