要用 Flutter 实现下面功能。Flutter 提供 TextSpan ,可以很方便做出来。但我的需求和它不一样,可能第二段文本很长,需要换行。
但是我使用 Text.rich 实现时,发现竟然没 maxLines
和 overflow
属性,就是设置最大行数和截断。
但是 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/