从FontWeight.w500没有加粗效果说起,聊一聊Flutter中的文本加粗方法
2024-01-28 13:42:05
从FontWeight.w500没有加粗效果说起,聊一聊Flutter中的文本加粗方法
首先先看一张设计图,这是我们公司App中的一张设计图,因为要节省开发资源,设计师只针对iOS出一套设计图,然后Android和iOS实现相关的设计效果(Android也会在个别地方做一些微调)。从截
图上我们可以看到,这是一张“用户协议”页面,在“用户协议”这几个字下面,有一行小字“请仔细阅读并同意以下协议”,如果按照iOS的设计来,那么在Flutter中实现这两个Text文本应该是这样的:
Text(
'用户协议',
style: TextStyle(
fontSize: 22,
fontWeight: FontWeight.w500,
color: Colors.black,
),
),
Text(
'请仔细阅读并同意以下协议',
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w400,
color: Colors.grey,
),
),
但是当你在Android手机上运行这个代码时,你会发现“用户协议”这几个字并没有加粗,而“请仔细阅读并同意以下协议”这几个字加粗了,这显然不是我们想要的效果。
于是我开始思考,为什么会出现这样的情况呢?我首先想到的是,可能是因为FontWeight.w500在Android系统中没有加粗效果,所以我查阅了Flutter的官方文档,发现确实是这样,FontWeight.w500在Android系统中没有加粗效果,只有FontWeight.w600、FontWeight.w700和FontWeight.w900才有加粗效果。
既然知道了原因,那么解决方法也很简单了,只要把FontWeight.w500改为FontWeight.w600、FontWeight.w700或FontWeight.w900就可以了。
Text(
'用户协议',
style: TextStyle(
fontSize: 22,
fontWeight: FontWeight.w600,
color: Colors.black,
),
),
Text(
'请仔细阅读并同意以下协议',
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w400,
color: Colors.grey,
),
),
这样就可以实现我们想要的效果了。
除了FontWeight.w500、FontWeight.w600、FontWeight.w700和FontWeight.w900这几个值之外,Flutter中还有其他一些FontWeight值,这些值可以用来设置文本的粗细。这些值包括:
- FontWeight.w100
- FontWeight.w200
- FontWeight.w300
- FontWeight.w400
- FontWeight.w500
- FontWeight.w600
- FontWeight.w700
- FontWeight.w800
- FontWeight.w900
这些值越大,文本就越粗。
在Flutter中,我们还可以通过Text widget的style属性来设置文本的粗细。Text widget的style属性是一个TextStyle对象,TextStyle对象有很多属性,其中就有fontWeight属性,fontWeight属性可以用来设置文本的粗细。
Text(
'用户协议',
style: TextStyle(
fontSize: 22,
fontWeight: FontWeight.bold,
color: Colors.black,
),
),
上面的代码也可以实现文本加粗的效果,FontWeight.bold相当于FontWeight.w700。
除了上述方法之外,我们还可以通过Flutter的RichText widget来实现文本加粗的效果。RichText widget是一个可以包含多个TextSpan的widget,TextSpan widget是一个可以设置文本样式的widget。
RichText(
text: TextSpan(
children: [
TextSpan(
text: '用户协议',
style: TextStyle(
fontSize: 22,
fontWeight: FontWeight.bold,
color: Colors.black,
),
),
TextSpan(
text: '请仔细阅读并同意以下协议',
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.normal,
color: Colors.grey,
),
),
],
),
)
上面的代码也可以实现文本加粗的效果。
以上就是Flutter中实现文本加粗的几种方法,希望对大家有所帮助。