Виджет DefaultTextStyle
Виджет DefaultTextStyle наследует оформление вниз по дереву:
все Text
без своего style берут параметр style отсюда.
Также можно задать textAlign, overflow,
maxLines для дочерних текстов. Обёрнутое поддерево
передают в child.
Синтаксис
DefaultTextStyle(
style: TextStyle(fontSize: 18),
child: Text('abcde'),
)
Параметры
| Параметр | Описание |
|---|---|
style |
Стиль по умолчанию. Принимает
TextStyle.
|
child |
Поддерево, для которого действует стиль. |
textAlign |
Выравнивание для дочерних текстов. Принимает
TextAlign.
|
overflow |
Обрезка для дочерних текстов. Принимает
TextOverflow.
|
maxLines |
Лимит строк для дочерних текстов. |
Методы
| Метод | Описание |
|---|---|
of |
Читает ближайший DefaultTextStyle из контекста.
|
merge |
Сливает новый стиль с текущим DefaultTextStyle.
|
Пример
Давайте зададим красный цвет для всех Text внутри:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: DefaultTextStyle(
style: TextStyle(color: Colors.red, fontSize: 20),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text('abcde'),
Text('12345'),
],
),
),
),
),
),
);
}
На экране обе строки будут красными и крупными
без отдельного style у каждого Text.
Пример
Давайте переопределим стиль только у одного Text:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: DefaultTextStyle(
style: TextStyle(fontSize: 16, color: Colors.black),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text('abcde'),
Text(
'12345',
style: TextStyle(fontWeight: FontWeight.bold),
),
],
),
),
),
),
),
);
}
На экране первая строка обычная, вторая жирная: локальный style слился с DefaultTextStyle.
Смотрите также
-
класс
TextStyle,
который описывает шрифт и цвет в параметре style -
метод
of,
который читает стиль изBuildContext -
метод
merge,
который накладывает стиль поверх текущего -
виджет
Text,
который использует унаследованный стиль