TextSpan Widget in Flutter
Last Updated :
01 Jul, 2021
TextSpan is an immutable span of text. It has style property to give style to the text. It is also having children property to add more text to this widget and give style to the children. Let's understand this with the help of an example.
Constructors:
Syntax:
TextSpan({String text,
List<InlineSpan> children,
TextStyle style,
GestureRecognizer recognizer,
String semanticsLabel})
Properties:
- text: The text contained in the span.
- children: More spans to include as children.
- style: The TextStyle given to the text.
- recognizer: The gesture detector when user hit the TextSpan widget.
- semanticsLabel: An alternative semantic label for this widget.
- hashCode: This parameter takes in an int value as the object to provide a hash code to the TextSpan widget. Hash code is an integer value that represents the state of the object that effect operator == comparison.
- runtimeType: This property takes in a Type as the object to represent the runtime type of the object. This property supports null safety.
Example:
Dart
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is
//the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'TextSpan',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
debugShowCheckedModeBanner: false,
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('GeeksforGeeks'),
backgroundColor: Colors.green
),
body: Center(
child: Text.rich(
TextSpan(
text: 'This is textspan ',
children: <InlineSpan>[
TextSpan(
text: 'Widget in flutter',
style: TextStyle(fontSize: 20,fontWeight: FontWeight.bold),
)
]
)
),
),
backgroundColor: Colors.lightBlue[50],
);
}
}
Output:
If the properties are defined as below:
TextSpan(
text: 'This is textspan ',
style: TextStyle(fontSize: 20,fontWeight: FontWeight.bold),
children: <InlineSpan>[
TextSpan(
text: 'Widget in flutter',
)
]
)
The following design changes can be observed:
If the properties are defined as below:
TextSpan(
text: 'This is textspan ',
children: <InlineSpan>[
TextSpan(
text: 'Widget in flutter',
style: TextStyle(fontSize: 20,fontWeight: FontWeight.bold),
)
]
)
The following design changes can be observed:

Explanation:
- Create TextSpan widget and wrap it with Text.rich() widget.
- Give the text to the TextSpan and add more inline children to it.
- Give style to the text and see the output.
Methods:
- build(ParagraphBuilder builder, {double textScaleFactor: 1.0, List<PlaceholderDimensions>? dimensions})
@override
void build (
ParagraphBuilder builder,
{double textScaleFactor: 1.0,
List<PlaceholderDimensions>? dimensions}
)
override
This build method helps in building drawing the paragraph objects. Paragraph can be obtained by applying the style, text and children of this object to the given ParagraphBuilder.
- compareTo(InlineSpan other) → RenderComparison
@override
RenderComparison compareTo (
InlineSpan other
)
override
This method returns the difference between this span and another, in terms of the damage that can be made to the rendering.
@override
String toStringShort ()
override
This method gives a concise description of the object, which are usually the runtimeType and the hashCode.
- visitChildren(InlineSpanVisitor visitor) → bool
@override
bool visitChildren (
InlineSpanVisitor visitor
)
override
This method moves this TextSpan and its child in pre-order and calls visitor for each span that has text.
Operator:
- operator ==(Object other) → bool
@override
bool operator == (
Object other
)
override
The equality operator.
The default action for all Objects is to return true if and only if this object and other are the same object. This method is overridden to define a different equality relation on a class.
Similar Reads
Flutter - RichText Widget The RichText widget is used to display text that uses various different styles. The displayed text is described using a tree of TextSpan objects, each of which has its own associated style that is used for that subtree. Depending on the layout constraints the text might break across multiple lines o
3 min read
What is Widgets in Flutter? Flutter is Google's UI toolkit for crafting beautiful, natively compiled iOS and Android apps from a single code base. To build any application we start with widgets - The building block of Flutter applications. Widgets describe what their view should look like given their current configuration and
5 min read
OffStage Widget in Flutter Flutter provides an inbuilt widget called âOffstageâ, which is been used to hide or show any widget programmatically depending on user action/event. Offstage Widget is a widget that lays the child out as if it was in the tree, but without painting anything, without making the child available for hit
4 min read
Flutter - Inherited Widget If you are a flutter developer then you know how easy is to create Flutter UI. But when you have lots of widgets in your app and you want to pass data from one widget to another widget, this will be a pain for many developers,s especially for the newbie, this will be really hard for them to pass the
6 min read
Motion Toast Widget in Flutter A Motion Toast widget in Flutter is a type of toast message that animates its appearance on the screen. It can be used to provide feedback or notifications to the user in a subtle, yet attention-grabbing way. One way to implement a Motion Toast in Flutter is to use the AnimatedContainer widget. You
3 min read
Flutter - Tooltip Widget Tooltip is a built-in widget in flutter based on material design, which displays a textual description of the widget in a floating label when a user long-pressed and or hover over the widget. Tooltip widget becomes very useful when the UI of the application is too dense to display all the informatio
7 min read