在Flutter中使用自定义字体,等宽字体

通过引入等宽字体解决音乐播放进度文本宽度变化导致的UI抖动。在Google开源字体网站选择Courier Prime等宽字体,下载ttf文件放入项目assets目录,并在yaml配置文件中声明。在UI中应用等宽字体,成功避免了播放时间变化引起的文本宽度抖动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

## 1.使用场景

音乐播放进度展示,播放过程中当前时间变化,由于时间的位数和各数字之间的宽度不固定,导致中间的进度条位置会抖动。

![](images\播放进度不等宽.png)


 

 

## 2.使用开源的自定义字体

在定义TextStyle对象时,有一个fontFamily属性,就是用于配置Text的字体。

```

TextStyle timeMonospaceStyle = TextStyle(

color: Colors.black,

fontSize: 13,

fontFamily: '***',

);

```

那么自定义的字体可以从哪里获取呢?

Google有一个开源字体网站,里面包含有各种开源免费的字体,就是https://fonts.google.com/(绿色上网),在其中的Categories选择等宽字体(Monospace),就能在筛选结果中进行选择合适的字体。

<img src="images\Google等宽字体.png" style="zoom:80%;" />

 

在字体的详细介绍页下方可以看到它的开源协议授权信息

![](images\字体的开源协议.png)


 

 

## 3.项目中引入字体使用

经过对比选择了CourierPrime等宽字体,下载了它的ttf文件CourierPrime-Regular.ttf,放到flutter项目的assets/fonts目录下,这个ttf文件占用了67KB的大小。在yaml中配置字体

```

fonts:

- family: CourierPrime # 等宽字体

fonts:

- asset: assets/fonts/CourierPrime-Regular.ttf

```

然后在UI界面中引用

```

// 时间使用等宽字体

TextStyle timeMonospaceStyle = TextStyle(

color: skinColor().musicTime,

fontSize: 13,

fontFamily: 'CourierPrime',

);

```

## 4.效果

使用了等宽字体后,数字的变动不会引起Text宽度的变动。

![](images\播放进度等宽.png)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值