在flutter中调整卡片高度为fontSize



我有一张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;}

您的做法应该有所不同。而不是计算文本的高度,然后使用它来大小卡片,把你的文本小部件在灵活的小部件,并把这些灵活的小部件在一个行。

Row(
children: [
Flexible(
child: Text('My text'),
)
],
),

这将使文本在即将溢出时自动换行。

我明白了。我在主题中定义了我的文本样式。但是,我没有设置样式的高度。在做数学运算时,我假设字体的高度是1,但事实并非如此。在我为所有的文本样式指定height: 1之后,数学效果很好

最新更新