Custom fonts let you use your favorite text styles in your app. This makes your app look unique and match your brand or style.
Custom fonts in Flutter
1. Add font files (e.g., .ttf) to your project folder, usually under assets/fonts. 2. Update pubspec.yaml to include the font: flutter: fonts: - family: YourFontName fonts: - asset: assets/fonts/YourFontFile.ttf 3. Use the font in your app: Text('Hello', style: TextStyle(fontFamily: 'YourFontName'))
The font family name in pubspec.yaml is what you use in your TextStyle.
Make sure to run flutter pub get after editing pubspec.yaml.
flutter:
fonts:
- family: Roboto
fonts:
- asset: assets/fonts/Roboto-Regular.ttfText('Welcome', style: TextStyle(fontFamily: 'Roboto'))
flutter:
fonts:
- family: OpenSans
fonts:
- asset: assets/fonts/OpenSans-Regular.ttf
- asset: assets/fonts/OpenSans-Bold.ttf
weight: 700Text('Bold Text', style: TextStyle(fontFamily: 'OpenSans', fontWeight: FontWeight.bold))
This app shows text using the custom font named 'Lobster'. You need to add the Lobster font file to assets/fonts and declare it in pubspec.yaml before running.
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: 'Custom Font Demo', home: Scaffold( appBar: AppBar(title: const Text('Custom Font Example')), body: const Center( child: Text( 'Hello with Custom Font!', style: TextStyle(fontFamily: 'Lobster', fontSize: 24), ), ), ), ); } }
Always check the font license before using it in your app.
If the font does not show, check the pubspec.yaml indentation and asset paths carefully.
You can add multiple fonts and weights for more style options.
Custom fonts make your app text unique and stylish.
Add font files to assets and declare them in pubspec.yaml.
Use the font family name in TextStyle to apply the font.
Practice
Solution
Step 1: Add font files to assets
You must first place your font files (like .ttf) inside an assets folder in your project.Step 2: Declare fonts in pubspec.yaml
Next, you declare these font files under the fonts section in pubspec.yaml so Flutter knows about them.Final Answer:
Add the font files to the assets folder and declare them in pubspec.yaml -> Option AQuick Check:
Custom fonts start with assets + pubspec.yaml declaration [OK]
- Skipping pubspec.yaml declaration
- Trying to use font without adding files
- Using font name without quotes in TextStyle
Solution
Step 1: Use fontFamily property in TextStyle
The correct property to set a font family is fontFamily, not font, fontName, or fontStyle.Step 2: Apply fontFamily in Text widget
Use TextStyle(fontFamily: 'YourFontName') inside the style parameter of Text widget.Final Answer:
Text('Hello', style: TextStyle(fontFamily: 'MyFont')) -> Option DQuick Check:
fontFamily property sets custom font [OK]
- Using font instead of fontFamily
- Confusing fontStyle with fontFamily
- Omitting quotes around font family name
fonts:
- family: CoolFont
fonts:
- asset: assets/fonts/CoolFont-Regular.ttf
- asset: assets/fonts/CoolFont-Bold.ttf
weight: 700
What will this code display?
Text('Hi', style: TextStyle(fontFamily: 'CoolFont', fontWeight: FontWeight.bold))Solution
Step 1: Understand fontWeight mapping
The pubspec.yaml declares two font assets: Regular (default weight) and Bold (weight 700).Step 2: TextStyle uses fontWeight.bold
Using fontWeight: FontWeight.bold matches weight 700, so Flutter uses the Bold font file.Final Answer:
Text 'Hi' in CoolFont Bold style -> Option AQuick Check:
fontWeight matches declared font weight for bold [OK]
- Ignoring fontWeight and expecting bold
- Assuming fontWeight 700 is invalid
- Not declaring font weights in pubspec.yaml
pubspec.yaml:
fonts:
- family: FancyFont
fonts:
- asset: assets/fonts/FancyFont.ttf
Dart code:
Text('Hello', style: TextStyle(fontFamily: 'FancyFontt'))Solution
Step 1: Check fontFamily spelling in Dart code
The Dart code uses 'FancyFontt' but pubspec.yaml declares 'FancyFont' (extra 't').Step 2: Font family names must match exactly
Font family names are case-sensitive and must match exactly between pubspec.yaml and Dart code.Final Answer:
Font family name in TextStyle does not match pubspec.yaml -> Option CQuick Check:
Font family names must match exactly [OK]
- Typos in font family names
- Forgetting to run flutter pub get after changes
- Incorrect indentation in pubspec.yaml
Solution
Step 1: Declare each font family separately in pubspec.yaml
You must list each font family with its own name and font files under the fonts section.Step 2: Use fontFamily property in Dart code for each Text widget
Apply fontFamily: 'Lobster' for titles and fontFamily: 'OpenSans' for body text in TextStyle.Final Answer:
Declare both fonts under fonts in pubspec.yaml with different family names, then use fontFamily: 'Lobster' or 'OpenSans' in TextStyle accordingly -> Option BQuick Check:
Multiple fonts need separate declarations and usage [OK]
- Declaring only one font family for multiple fonts
- Using wrong fontFamily names in Dart code
- Not adding all font files to assets
Ready to prove it?
Pass the test and this pattern moves unknown
