#flutter #user-interface #mobile #accessibility #font-size
Вопрос:
У меня есть карточка с 2 текстовыми виджетами, и я хочу, чтобы они не переполнялись, независимо от размера шрифта, установленного пользователем в настройках специальных возможностей. Я делаю это исчисление, и оно сразу же переполняется. Я добавил константу к общей высоте, чтобы она не переполнялась, но когда я увеличил размер шрифта еще больше в настройках, он снова переполняется.
Что я здесь упускаю?
double getCardHeight(BuildContext context) {
final scale = MediaQuery.of(context).textScaleFactor;
double bodyFontSize = Theme.of(context).textTheme.bodyText2?.fontSize ?? 0;
double bodyLineHeight = bodyFontSize * scale;
double titleFontSize = Theme.of(context).textTheme.headline5?.fontSize ?? 0;
double titleLineHeight = titleFontSize * scale;
final textsHeight =
(titleLineHeight * titleMaxLines) (bodyLineHeight * bodyMaxLines);
final cardHeight = textsHeight verticalPadding * 2;
print("card height = $cardHeight");
return cardHeight;}
Комментарии:
1. опубликуйте результаты тоже
Ответ №1:
Вы должны сделать это немного по-другому. Вместо того, чтобы вычислять высоту текста, а затем использовать ее для определения размера карточек, поместите текстовые виджеты в гибкие виджеты и поместите эти гибкие виджеты в строку.
Row(
children: [
Flexible(
child: Text('My text'),
)
],
),
Это сделает так, что текст будет обертываться всякий раз, когда он вот-вот переполнится.
Ответ №2:
Я все понял. У меня есть свои стили текста, определенные в теме. Однако я не устанавливал высоту стилей. При выполнении математики я предположил, что высота шрифта равна 1, но это не так. После того, как я указал высоту: 1 для всех моих стилей текста, математика работает нормально