TextSpan class

An immutable span of text.

A TextSpan object can be styled using its style property. The style will be applied to the text and the children.

A TextSpan object can just have plain text, or it can have children TextSpan objects with their own styles that (possibly only partially) override the style of this object. If a TextSpan has both text and children, then the text is treated as if it was an unstyled TextSpan at the start of the children list. Leaving the TextSpan.text field null results in the TextSpan acting as an empty node in the InlineSpan tree with a list of children.

To paint a TextSpan on a Canvas, use a TextPainter. To display a text span in a widget, use a RichText. For text with a single style, consider using the Text widget.

The text "Hello world!", in black:
TextSpan(
  text: 'Hello world!',
  style: TextStyle(color: Colors.black),
)

There is some more detailed sample code in the documentation for the recognizer property.

The TextSpan.text will be used as the semantics label unless overriden by the TextSpan.semanticsLabel property. Any PlaceholderSpans in the TextSpan.children list will separate the text before and after it into two semantics nodes.

See also:

  • WidgetSpan, a leaf node that represents an embedded inline widget in an InlineSpan tree. Specify a widget within the children list by wrapping the widget with a WidgetSpan. The widget will be laid out inline within the paragraph.
  • Text, a widget for showing uniformly-styled text.
  • RichText, a widget for finer control of text rendering.
  • TextPainter, a class for painting TextSpan objects on a Canvas.
Inheritance
Annotations
  • @immutable

Constructors

TextSpan({String text, List<InlineSpan> children, TextStyle style, GestureRecognizer recognizer, String semanticsLabel })
Creates a TextSpan with the given values. [...]
const

Properties

children List<InlineSpan>
Additional spans to include as children. [...]
final
hashCode int
The hash code for this object. [...]
read-only, override
recognizer GestureRecognizer
A gesture recognizer that will receive events that hit this span. [...]
final
semanticsLabel String
An alternative semantics label for this TextSpan. [...]
final
text String
The text contained in this span. [...]
final
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited
style TextStyle
The TextStyle to apply to this span. [...]
final, inherited

Methods

build(ParagraphBuilder builder, { double textScaleFactor: 1.0, List<PlaceholderDimensions> dimensions }) → void
Apply the style, text, and children of this object to the given ParagraphBuilder, from which a Paragraph can be obtained. Paragraph objects can be drawn on Canvas objects. [...]
override
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. [...]
override
computeToPlainText(StringBuffer buffer, { bool includeSemanticsLabels: true, bool includePlaceholders: true }) → void
Walks the InlineSpan tree and writes the plain text representation to buffer. [...]
override
debugAssertIsValid() bool
In checked 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. [...]
override
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node. [...]
override
describeSemantics(Accumulator offset, List<int> semanticsOffsets, List semanticsElements) → void
Populates the semanticsOffsets and semanticsElements with the appropriate data to be able to construct a SemanticsNode. [...]
override
getSpanForPositionVisitor(TextPosition position, Accumulator offset) InlineSpan
Returns the text span that contains the given position in the text.
override
toStringShort() String
A brief description of this object, usually just the runtimeType and the hashCode. [...]
override
visitChildren(InlineSpanVisitor visitor) bool
Walks this TextSpan and its descendants in pre-order and calls visitor for each span that has text. [...]
override
visitTextSpan(bool visitor(TextSpan span)) bool
Walks this TextSpan and any descendants in pre-order and calls visitor for each span that has content. [...]
@Deprecated('Use to visitChildren instead'), override
codeUnitAt(int index) int
Returns the UTF-16 code unit at the given index in the flattened string. [...]
inherited
getSemanticsInformation() List<InlineSpanSemanticsInformation>
Flattens the InlineSpan tree to a list of InlineSpanSemanticsInformation objects. [...]
inherited
getSpanForPosition(TextPosition position) InlineSpan
Returns the InlineSpan that contains the given position in the text.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent 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.debug }) String
Returns 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

Operators

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