Понимание того, какие стили по умолчанию используются в приложении Flutter + Material

Только начинаем с Flutter + Material design. Я заметил, что при создании темы с использованием ThemeData, если я использую что-то вроде этого:

ThemeData(
  textTheme: TextTheme(bodyText1: TextStyle(color: Colors.white)),
)

Кажется, что текст в простом GridView с текстовыми виджетами не окрашивается в белый цвет. Однако, если я изменю указанное выше, чтобы использовать bodyText2, это произойдет.

Какая логика используется bodyText2 для текста в приложении? Есть ли хорошее место, чтобы указать, какие имена стилей текста используются и почему в ситуации тематизации? Все ли это просто знания, полученные методом проб и ошибок, или есть какие-то хорошие универсальные правила, определяющие, какие стили используются в каких обстоятельствах?

Спасибо.


person shennan    schedule 31.03.2021    source источник
comment
Вы можете прочитать спецификации и подробности здесь: api.flutter.dev/flutter/material /TextTheme-class.html   -  person Midhun MP    schedule 31.03.2021
comment
Да, я видел эту поломку. Это дает хорошее что, но не очень хорошее почему. Я получаю, что разные имена соответствуют разным спецификациям шрифтов; что не так очевидно, так это то, какие значения по умолчанию используются во всем приложении. Почему в моих виджетах используется изменение `bodyText2, а не bodyText1? Могу ли я быть уверен, что bodyText2 всегда будет использоваться, если я не выберу конкретную текстовую тему на локальном уровне? Ответы на эти вопросы, похоже, отсутствуют в документации.   -  person shennan    schedule 31.03.2021


Ответы (2)


Я столкнулся с той же проблемой и провел небольшое исследование по этому поводу.

Согласно официальной документации для Text:

Аргумент стиля не является обязательным. Если опущено, текст будет использовать стиль ближайшего включающего DefaultTextStyle.

И объяснение bodyText2 в TextTheme:

Стиль текста по умолчанию для Материал.

Теперь ответ предельно ясен. Если ваш Text виджет не имеет явно заданного стиля текста и не имеет унаследованного стиля текста от своих предков в способе размещения DefaultTextStyle в некоторых узлах. Тогда он будет использовать значение bodyText2 из темы.

person Evan    schedule 20.05.2021
comment
Я приму это как ответ. Вы правы в том, что bodyText2 используется в сценариях, когда стиль текста не указан. Однако это кажется неинтуитивным значением по умолчанию; и было бы неплохо, если бы была дополнительная информация о том, почему этот стиль используется по умолчанию и был ли он выбран на основе какого-либо культурного или логического принципа. - person shennan; 26.05.2021

Вы можете прочитать документацию по темам здесь: https://flutter.dev/docs/cookbook/design/themes

Они объяснили на примере.

person Muhammad Ashir    schedule 31.03.2021
comment
Согласно предыдущему комментарию; в этих документах не объясняется, почему bodyText2 используется для виджета без стиля. Какие стили по умолчанию используются в какой ситуации - это что-то вроде черного ящика. - person shennan; 31.03.2021