In Flutter, TextStyle customization plays an important role in creating visually appealing and consistent user interfaces. Text is one of the most common UI elements in any application, and how it looks can significantly influence the user experience. Flutter provides a flexible and powerful way to style text using the TextStyle
class. By customizing properties such as font size, weight, color, letter spacing, height, shadows, and more, developers can design beautiful text that aligns with their brand and enhances readability.

What is TextStyle in Flutter?
TextStyle
is a class in Flutter that defines how text should be displayed. It can be applied directly to the Text
widget using the style
parameter. By default, Flutter uses the platform’s typography, but with TextStyle you can modify every detail to achieve a custom look and feel.
Basic Example of TextStyle
import 'package:flutter/material.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( title: 'TextStyle Demo', home: Scaffold( appBar: AppBar(title: const Text("Customizing TextStyle")), body: const Center( child: Text( "Hello Flutter!", style: TextStyle( fontSize: 24, fontWeight: FontWeight.bold, color: Colors.blue, ), ), ), ), ); } }
In the example above, the Text
widget is styled with a custom font size, weight, and color. This shows the fundamental use of TextStyle
in Flutter.
Common Properties of TextStyle
Property | Description | Example |
---|---|---|
fontSize | Defines the size of the text. | fontSize: 20 |
fontWeight | Specifies the thickness of the font (e.g., bold). | fontWeight: FontWeight.w600 |
fontStyle | Sets italic or normal text. | fontStyle: FontStyle.italic |
color | Applies a color to the text. | color: Colors.red |
letterSpacing | Controls spacing between letters. | letterSpacing: 2.0 |
wordSpacing | Controls spacing between words. | wordSpacing: 5.0 |
height | Sets line height of the text. | height: 1.5 |
shadows | Adds text shadows for depth. | shadows: [Shadow(...)] |
decoration | Applies underline, overline, or line-through. | decoration: TextDecoration.underline |
Customizing Fonts in Flutter
Flutter allows developers to use custom fonts by adding them to the project. Here’s how to use a custom Google Font:
- Add the font file to your
assets/fonts
directory. - Update
pubspec.yaml
with the font details. - Apply it using
TextStyle
.
flutter: fonts: - family: Roboto fonts: - asset: assets/fonts/Roboto-Regular.ttf - asset: assets/fonts/Roboto-Bold.ttf weight: 700
Text( "Custom Font Example", style: TextStyle( fontFamily: 'Roboto', fontSize: 22, fontWeight: FontWeight.bold, ), )
Using Google Fonts Package
Instead of manually adding fonts, you can use the Google Fonts package for quick font integration:
import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; class GoogleFontDemo extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text("Google Fonts Example")), body: Center( child: Text( "Styled with Google Fonts", style: GoogleFonts.lato( fontSize: 24, fontWeight: FontWeight.w700, color: Colors.green, ), ), ), ); } }
Applying TextTheme for Consistency
For consistent typography across your app, use TextTheme
inside ThemeData
. This allows you to define global text styles.
MaterialApp( theme: ThemeData( textTheme: const TextTheme( bodyLarge: TextStyle(fontSize: 18, color: Colors.black), titleLarge: TextStyle(fontSize: 22, fontWeight: FontWeight.bold), ), ), home: Scaffold( appBar: AppBar(title: Text("TextTheme Demo")), body: Column( mainAxisAlignment: MainAxisAlignment.center, children: const [ Text("This is body text", style: TextStyle().copyWith(fontSize: 18)), Text("This is title text", style: TextStyle().copyWith(fontWeight: FontWeight.bold)), ], ), ), );
Real Case Example: Custom Headline and Body Text
Let’s create a page with different styled headings and body text to simulate a real blog screen.
import 'package:flutter/material.dart'; class BlogPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text("Blog Example")), body: Padding( padding: const EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: const [ Text( "Flutter TextStyle Customization", style: TextStyle( fontSize: 28, fontWeight: FontWeight.bold, color: Colors.deepPurple, ), ), SizedBox(height: 10), Text( "Flutter makes it simple to style your text with TextStyle. You can define font size, color, weight, and much more to create a great user interface.", style: TextStyle( fontSize: 16, height: 1.5, color: Colors.black87, ), ), ], ), ), ); } }
Best Practices for Customizing TextStyle
- Use
TextTheme
for consistent design across your app. - Pick font sizes and weights that improve readability.
- Limit the number of font families for better UI consistency.
- Use shadows and decorations sparingly to avoid clutter.
- Leverage Google Fonts for quick integration.
Conclusion
Mastering customizing TextStyle in Flutter gives you the power to design professional and attractive text across your app. From basic font adjustments to using custom fonts and applying global TextTheme
, Flutter provides all the flexibility needed to match your brand and user needs. With consistent text styling, you ensure both aesthetic appeal and improved user experience.