Flutter中如何将默认文本字号缩小1像素?解决字号异常问题
问题原因
你用DefaultTextStyle.of(context)获取的是当前上下文最近的全局默认文本样式,而非第一个Text组件的样式。如果第一个Text自定义了字号(比如远小于全局默认值),那第二个Text用全局默认字号减1后,自然会比第一个Text大很多,甚至出现三倍的差距。
解决方案
根据你的需求,有几种简单的实现方式:
方式一:固定字号(最直接)
直接给两个Text设置明确的字号,第二个比第一个小:
Column( children: [ Text( "第一个文本", style: TextStyle(fontSize: 16), ), Text( "第二个文本", style: TextStyle(fontSize: 15), ), ], )
方式二:复用字号变量(更灵活)
把基础字号存为变量,第二个Text直接使用变量减1,后续修改时只需改一处:
final double baseFontSize = 16; Column( children: [ Text( "第一个文本", style: TextStyle(fontSize: baseFontSize), ), Text( "第二个文本", style: TextStyle(fontSize: baseFontSize - 1), ), ], )
方式三:继承默认样式(适合第一个Text用全局默认的情况)
如果第一个Text没有自定义样式,直接使用全局默认样式,那第二个Text可以继承该样式并修改字号:
Column( children: [ Text("第一个文本"), Text( "第二个文本", style: DefaultTextStyle.of(context).style.copyWith( fontSize: DefaultTextStyle.of(context).style.fontSize! - 1, ), ), ], )
内容的提问来源于stack exchange,提问作者Chris Snow
相关产品推荐
相关产品推荐

