Flutter配置FFShamelFamily字体未生效仍显示默认字体问题求助
Flutter自定义字体不生效的排查方向
- pubspec.yaml配置层级错误
Flutter的YAML配置对缩进要求严格,禁止使用Tab缩进,且fonts字段必须是flutter:根节点的直接子级,和assets、uses-material-design字段处于同一层级。如果fonts配置没有正确挂在flutter:节点下,整个字体声明会被完全忽略,直接使用系统默认字体渲染。
正确的配置参考结构:
flutter: uses-material-design: true # 字体声明必须嵌套在flutter节点下 fonts: - family: FFShamelFamily fonts: - asset: assets/fonts/ArbFONTS-FFShamelFamily-SansOneBook.ttf weight: FontWeight.w400 - asset: assets/fonts/ArbFONTS-FFShamelFamily-SansOneBold.ttf weight: FontWeight.w700
- 未给字体文件绑定字重属性
现有配置仅声明了字体文件路径,没有给两个不同字重的ttf文件匹配对应的weight值。Flutter不会自动识别同字体家族下不同文件的字重属性,当界面需要渲染粗体、常规字重等不同样式的文字时,会直接触发字体回退机制,使用系统默认字体。 - 资源加载流程错误
完成配置修改后,必须执行两个步骤才能让字体生效:- 运行
flutter pub get同步项目配置 - 完全终止当前调试进程,冷启动重新安装APP到设备。字体属于应用启动时加载的静态资源,热重载、热重启都不会重新加载新的字体文件,很容易出现“配置写了但没生效”的假象。
- 运行
- 资源路径拼写不匹配
核对pubspec中填写的字体文件路径,和项目内实际存放的文件路径完全一致,包括大小写、文件名拼写、文件后缀名。哪怕路径存在一个字符的偏差,Flutter都会因为找不到对应字体文件,静默回退到默认字体,且不会抛出明确的报错。 - 局部样式覆盖全局主题
排查项目内所有单独声明TextStyle的组件,如果这些组件没有继承全局主题的字体设置,会使用自身配置的默认字体渲染,不会应用全局声明的自定义字体。
内容的提问来源于stack exchange,提问作者Mariam Younes
相关产品推荐
相关产品推荐

