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.

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:
  text: 'Hello world!',
  style: TextStyle(color: Colors.black),

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

See also:

  • @immutable


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


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


build(ParagraphBuilder builder, { double textScaleFactor: 1.0 }) → 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. [...]
codeUnitAt(int index) int
Returns the UTF-16 code unit at the given index in the flattened string. [...]
compareTo(TextSpan other) RenderComparison
Describe the difference between this text span and another, in terms of how much damage it will make to the rendering. The comparison is deep. [...]
debugAssertIsValid() bool
In checked mode, throws an exception if the object is not in a valid configuration. Otherwise, returns true. [...]
debugDescribeChildren() List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children. [...]
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node. [...]
getSpanForPosition(TextPosition position) TextSpan
Returns the text span that contains the given position in the text.
toPlainText({bool includeSemanticsLabels: true }) String
Flattens the TextSpan tree into a single string. [...]
toStringShort() String
A brief description of this object, usually just the runtimeType and the hashCode. [...]
visitTextSpan(bool visitor(TextSpan span)) bool
Walks this text span and its descendants in pre-order and calls visitor for each span that has text.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]
toDiagnosticsNode({String name, DiagnosticsTreeStyle style }) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep. [...]
toString({DiagnosticLevel minLevel: DiagnosticLevel.debug }) String
Returns a string representation of this object.
toStringDeep({String prefixLineOne: '', String prefixOtherLines, DiagnosticLevel minLevel: DiagnosticLevel.debug }) String
Returns a string representation of this node and its descendants. [...]
toStringShallow({String joiner: ', ', DiagnosticLevel minLevel: DiagnosticLevel.debug }) String
Returns a one-line detailed description of the object. [...]


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