Адаптируйте высоту карты к размеру шрифта в flutter

#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 для всех моих стилей текста, математика работает нормально