Text
This page has not been translated into English yet. The Russian original is below.
Отображение текстового контента с поддержкой стилей, выравнивания и переноса.
Тип:
leaf
Text "Hello, World!"
Параметры
| Параметр | Тип | Описание |
|---|---|---|
| (позиционный 0) | string | Текст для отображения |
textAlign
|
string |
Выравнивание текста:
left
,
right
,
center
,
justify
,
start
,
end
|
direction
|
string |
Направление текста:
ltr
,
rtl
|
overflow
|
string |
Поведение при переполнении:
clip
,
fade
,
ellipsis
,
visible
|
softWrap
|
bool | Разрешить перенос строк |
maxLines
|
int | Максимальное количество строк |
textWidthBasis
|
string |
Базис ширины текста:
parent
,
longestLine
|
selectionColor
|
color | Цвет выделения текста |
semanticsLabel
|
string | Метка для accessibility |
semanticsIdentifier
|
string | Идентификатор для accessibility |
Вложенные структуры
#style
Стилизация текста через
ReeelValueParser.parseTextStyle
.
Text "Заголовок"
#style fontSize:24 fontWeight:bold color:#FFFFFF
Контур вместо заливки
strokeWidth:
рисует букву ОБВОДКОЙ — приём для гигантской цифры главы или слова за содержимым. Цвет обводки берёт
strokeColor:
, а без него —
color:
.
Text "03"
#style fontFamily:"Anton" fontSize:320 strokeWidth:1.5 color:0x1FFAFAFF
Обводка ДОБАВЛЯЕТСЯ к заливке — так же, как
-webkit-text-stroke
добавляется к
color
в вёрстке. Контур без заливки — это прозрачный
color:
, ровно как в таблице стилей. У
TextStyle
краска одна (
foreground
), и Flutter запрещает держать её вместе с
color
, поэтому, когда видны обе, билдер
Text
рисует букву ДВАЖДЫ: сперва заливку, потом контур — в том же порядке, что
paint-order
у браузера. Разметка об этом не знает.
Регистр — стилем, а не строкой
textTransform:
(
uppercase
/
lowercase
/
none
) поднимает или опускает регистр НАДПИСИ, не трогая сам текст.
Text $strings.chapterLabel
#style fontSize:12 letterSpacing:2.16 textTransform:uppercase
Почему не
{upperCase(...)}
: функция меняет строку, и на вебе капс уезжает в САМ ДОКУМЕНТ — поиск по странице перестаёт находить слово обычным написанием, копирование даёт крик, а скринридер читает по буквам. Стиль меняет только отрисовку.
На вебе это CSS
text-transform
. Во Flutter такого свойства нет вовсе, поэтому там билдер преобразует строку сам, а исходную кладёт в
semanticsLabel
— вид одинаковый, произношение правильное.
Работает у
Text
,
SelectableText
и
RichText
(в нём наследуется пролётами, как в CSS).
#style
, отданный виджету, который владеет своей строкой (подпись поля,
Chip
), регистр НЕ меняет — одинаково на обоих рендерах.
capitalize
не поддержан намеренно: CSS поднимает первую букву слова по границам слова Unicode (
x-ray
→
X-Ray
), в Dart такого примитива нет, и одна разметка дала бы два разных текста.
Примеры
Текст с переменной (шаблонная строка)
Text $"Привет, ${userName}!"
Стилизованный текст
Text "Заголовок раздела"
#style fontSize:32 fontWeight:bold color:#FFFFFF
Текст с ограничением строк
Text "Очень длинное описание..." maxLines:2 overflow:ellipsis
Текст в контексте
Column spacing:8
Text "Заголовок"
#style fontSize:24 fontWeight:bold
Text "Подзаголовок"
#style fontSize:16 color:#888888