You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中使用可变字体仅显示FontWeight.w400/w600问题求助

解决Flutter可变字体仅显示w400/w600权重的问题

问题原因

Flutter默认不会自动识别可变字体的完整权重范围,需明确配置字体的权重区间,或直接通过fontVariations指定权重轴数值,而非依赖FontWeight的自动映射。

解决方案1:修正pubspec.yaml的字体配置

在字体配置中添加weight和endWeight,明确可变字体支持的权重范围(以Sono为例,它支持100-900的权重):

flutter:
  uses-material-design: true

  ...

  fonts:
    - family: Sono
      fonts:
        - asset: assets/fonts/Sono-VariableFont.ttf
          weight: 100
          endWeight: 900

解决方案2:直接使用fontVariations控制权重

若配置后仍有问题,跳过FontWeight,直接指定可变字体的wght轴数值(标准可变字体的权重轴标签为wght):
修改页面代码中的TextStyle:

Text(
  'This text has weight $weight',
  style: TextStyle(
    fontVariations: [
      FontVariation('wght', weight.value.toDouble()),
    ],
  ),
)

验证步骤

  1. 执行flutter pub get刷新配置
  2. 重启应用(热重载可能不生效)
  3. 查看所有权重的文本是否呈现渐变效果

内容的提问来源于stack exchange,提问作者ndelanou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 17:10:23