Flutter配置字体报Unexpected key assets under font错误
报错原因
这个错误是pubspec.yaml的YAML缩进不符合规范导致的。YAML是强缩进敏感的配置格式,你写的OpenSans字体配置没有做正确的层级缩进,和你自己写的Quicksand参考配置对比就能发现差异:Flutter解析配置时,没有识别到OpenSans配置下的fonts子节点,把本该属于字体条目下的asset字段判定为font节点下的非法assets键,直接抛出解析错误。
你写的错误OpenSans配置存在三个缩进问题:
family: OpenSans条目下的fonts:字段没有缩进2个空格,和family字段处于同一层级,没有归属到OpenSans字体族的配置项下- 每个
- asset:字体文件条目没有在fonts节点下再缩进2个空格,没有被识别为fonts下的子项 - Bold字体对应的
weight: 700字段没有和对应的asset条目保持同层级缩进,配置结构完全错乱
修复方案
把OpenSans的配置按照Quicksand的缩进规则(统一用2个空格做层级缩进,禁止用Tab)改写即可,修复后的完整字体配置如下:
fonts: - family: OpenSans fonts: - asset: assets/fonts/OpenSans-Bold.ttf weight: 700 - asset: assets/fonts/OpenSans-Regular.ttf - family: Quicksand fonts: - asset: assets/fonts/Quicksand-Bold.ttf weight: 700 - asset: assets/fonts/Quicksand-Regular.ttf
配置修改完成后,执行
flutter pub get刷新项目配置,完全重启App即可验证字体是否正常加载,不要用热重载加载pubspec配置改动。
内容的提问来源于stack exchange,提问作者Dead Eye
相关产品推荐
相关产品推荐

