Класс TextTheme
Класс TextTheme описывает TextStyle
для ролей displayLarge, titleMedium, bodyMedium
и других типов M3.
Объект лежит в textTheme у ThemeData
и читается через Theme.of(context).textTheme.
Слияние и правки дают методы merge,
copyWith и apply.
Синтаксис
TextTheme(
bodyMedium: TextStyle(fontSize: 16),
titleLarge: TextStyle(fontSize: 22),
)
Параметры
| Параметр | Описание |
|---|---|
displayLarge |
Самый крупный заголовок. Принимает TextStyle.
|
titleMedium |
Заголовок среднего размера. Принимает TextStyle.
|
bodyMedium |
Основной текст абзаца. Принимает TextStyle.
|
Методы
| Метод | Описание |
|---|---|
apply |
Принимает fontFamily, fontSize, color, letterSpacing и другие общие поля. |
copyWith |
Принимает новые стили для displayLarge, bodyMedium и других ролей. |
lerp |
Принимает две TextTheme и долю t. Давайте разберём вызов на примерах.
|
merge |
Принимает другую TextTheme. Давайте разберём вызов на примерах.
|
Пример
Давайте зададим bodyMedium в ThemeData:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
theme: ThemeData(
textTheme: TextTheme(
bodyMedium: TextStyle(
fontSize: 20,
color: Colors.brown,
),
),
),
home: Scaffold(
body: Center(
child: Text('abcde'),
),
),
),
);
}
На экране строка 'abcde' станет крупнее
и коричневой из bodyMedium.
Пример
Давайте оформим заголовок через titleLarge:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
theme: ThemeData(
textTheme: TextTheme(
titleLarge: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 24,
),
),
),
home: Builder(
builder: (context) {
var style = Theme.of(context).textTheme.titleLarge;
return Scaffold(
body: Center(
child: Text(
'12345',
style: style,
),
),
);
},
),
),
);
}
На экране подпись '12345' станет
жирной и крупной из titleLarge.