Спросите помощника
0/400
Вопрос обрабатывается ИИ-сервисом и сохраняется для улучшения ответов. Не вводите персональные данные.

    Text

    Отображение текстового контента с поддержкой стилей, выравнивания и переноса.

    Тип: 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

    See also

    • Column — вертикальный контейнер для размещения текстов
    • Button — интерактивный элемент, часто содержит Text
    menu_baseline