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()), ], ), )
验证步骤
- 执行
flutter pub get刷新配置 - 重启应用(热重载可能不生效)
- 查看所有权重的文本是否呈现渐变效果
内容的提问来源于stack exchange,提问作者ndelanou
相关产品推荐
相关产品推荐

