Text.rich() or RichText 字体偏小,设置最大行数和截断

要用 Flutter 实现下面功能。Flutter 提供 TextSpan ,可以很方便做出来。但我的需求和它不一样,可能第二段文本很长,需要换行。

但是我使用 Text.rich 实现时,发现竟然没 maxLinesoverflow 属性,就是设置最大行数和截断。

但是 RichText 提供了这些属性的设置,使用后又发现一个问题,设置同样字体大小 fontSize ,结果显示在界面上明显比其他的 Text 要小。

child: RichText(
textScaleFactor: tsf,
maxLines: 4,
overflow: TextOverflow.ellipsis,
text: TextSpan(children: [
  TextSpan(
      text: "Home: ",
      style: Styles.style_gray_12),
  TextSpan(
      text: "https://guozh.net+40985309493",
      style: Styles.style_white_12),
]),
)),

找了一圈 font size issue in flutter by using Text.rich() or RichText,才了解到需要为 RichText 初始化文本缩放因子 textScaleFactor。这个属性的本意是为字体设置增幅,比如设置成 1.5,则显示文本在字体大小基础上再放大 50% 。像 Text 的默认值是 1,也就是原字体大小。我估计 RichText 并没初始化这个值。

所以添加以下代码,然后设置到 RichText 。

final tsf = MediaQuery.of(context).textScaleFactor;

发现 Flutter 中文能搜到的资料真少,我最近项目碰到的问题至少 80% 通过英文搜索解决的。

本文由老郭种树原创,转载请注明:https://guozh.net/text-rich-or-richtext-fonts-are-on-the-small-side/

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注