CustomText class

A text widget that decorates substrings and enables tap, long-press and/or hover gestures on them based on flexible definitions.

This is useful for making certain portions of text such as URLs, email addresses or phone numbers clickable, or for only highlighting substrings with colours and different font settings.

CustomText(
  'URL: https://example.com/\n'
  'Email: foo@example.com\n'
  'Tel: +1-012-3456-7890',
  definitions: const [
    TextDefinition(matcher: UrlMatcher()),
    TextDefinition(matcher: EmailMatcher()),
    TextDefinition(matcher: TelMatcher()),
  ],
  matchStyle: const TextStyle(color: Colors.indigo),
  hoverStyle: const TextStyle(color: Colors.lightBlue),
  onTap: (details) => launchUrlString(details.actionText),
)

This widget also has the CustomText.spans constructor, which targets a list of InlineSpans instead of plain text.

Inheritance

Constructors

CustomText(String text, {Key? key, required List<Definition> definitions, CustomSpanBuilder? preBuilder, ParserOptions parserOptions = const ParserOptions(), TextStyle? style, TextStyle? matchStyle, TextStyle? tapStyle, TextStyle? hoverStyle, GestureCallback? onTap, GestureCallback? onLongPress, GestureCallback? onGesture, Duration? longPressDuration, bool preventBlocking = false, StrutStyle? strutStyle, TextAlign? textAlign, TextDirection? textDirection, Locale? locale, bool? softWrap, TextOverflow? overflow, TextScaler? textScaler, int? maxLines, String? semanticsLabel, TextWidthBasis? textWidthBasis, TextHeightBehavior? textHeightBehavior, Color? selectionColor})
Creates a text widget that decorates substrings and enables tap, long-press and/or hover gestures on them based on flexible definitions.
const
CustomText.spans({Key? key, required List<InlineSpan> spans, required List<Definition> definitions, ParserOptions parserOptions = const ParserOptions(), TextStyle? style, TextStyle? matchStyle, TextStyle? tapStyle, TextStyle? hoverStyle, GestureCallback? onTap, GestureCallback? onLongPress, GestureCallback? onGesture, Duration? longPressDuration, bool preventBlocking = false, StrutStyle? strutStyle, TextAlign? textAlign, TextDirection? textDirection, Locale? locale, bool? softWrap, TextOverflow? overflow, TextScaler? textScaler, int? maxLines, String? semanticsLabel, TextWidthBasis? textWidthBasis, TextHeightBehavior? textHeightBehavior, Color? selectionColor})
Creates a text widget that decorates part of the provided InlineSpans and enables tap, long-press and/or hover gestures on them based on flexible definitions.
const

Properties

definitions List<Definition>
Definitions that specify rules for parsing, appearance and actions.
final
hashCode int
The hash code for this object.
no setterinherited
hoverStyle TextStyle?
The default text style used for matched strings while they are under the mouse pointer.
final
key Key?
Controls how one widget replaces another widget in the tree.
finalinherited
locale Locale?
Used to select a font when the same Unicode character can be rendered differently, depending on the locale.
final
longPressDuration Duration?
The duration before a tap is regarded as a long-press and the onLongPress function is called.
final
matchStyle TextStyle?
The default text style for matched strings.
final
maxLines int?
An optional maximum number of lines for the text to span, wrapping if necessary.
final
onGesture GestureCallback?
The callback function called when a gesture happens on a string.
final
onLongPress GestureCallback?
The callback function called when a matched string is long-pressed.
final
onTap GestureCallback?
The callback function called when a matched string is tapped.
final
overflow TextOverflow?
How visual overflow should be handled.
final
parserOptions ParserOptions
The options for RegExp that configure how regular expressions are treated.
final
preBuilder CustomSpanBuilder?
A builder function to build a TextSpan to which styles and gesture actions are applied.
final
preventBlocking bool
Whether to use an isolate for parsing to avoid blocking of the UI.
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
selectionColor Color?
The color to use when painting the selection.
final
semanticsLabel String?
An alternative semantics label for this text.
final
softWrap bool?
Whether the text should break at soft line breaks.
final
spans List<InlineSpan>?
The list of InlineSpans to which styles and gesture actions are applied.
final
strutStyle StrutStyle?
The strut style to use.
final
style TextStyle?
The text style for strings that did not match any match patterns.
final
tapStyle TextStyle?
The default text style used for tappable strings while they are being pressed.
final
text String?
The text to which styles and gesture actions are applied.
final
textAlign TextAlign?
How the text should be aligned horizontally.
final
textDirection TextDirection?
The directionality of the text.
final
textHeightBehavior TextHeightBehavior?
Defines how to apply TextStyle.height over and under text.
final
textScaler TextScaler?
The font scaling strategy to use when laying out and rendering the text.
final
textWidthBasis TextWidthBasis?
Defines how to measure the width of the rendered text.
final

Methods

createElement() StatefulElement
Creates a StatefulElement to manage this widget's location in the tree.
inherited
createState() State<CustomText>
Creates the mutable state for this widget at a given location in the tree.
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
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}) 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

Operators

operator ==(Object other) bool
The equality operator.
inherited