Flutter自定义字体报错:pubspec.yaml解析块映射时预期键
解决Flutter自定义字体的YAML解析错误
问题原因
这个报错是YAML格式解析失败导致的,核心原因是缩进不规范或节点层级错误——YAML对缩进要求严格,必须用统一的空格(推荐2个),且子节点要正确嵌套在父节点下,不能混合Tab和空格。
修正后的pubspec.yaml配置
你的字体配置必须嵌套在flutter节点下,确保所有层级缩进一致,修正后的完整相关代码如下:
flutter: uses-material-design: true # 自定义字体配置 fonts: - family: OpenSans fonts: - asset: fonts/OpenSans-Regular.ttf - asset: fonts/OpenSans-Bold.ttf weight: 700 - family: Quicksand fonts: - asset: fonts/Quicksand-Regular.ttf - asset: fonts/Quicksand-Bold.ttf weight: 700
关键检查项
- 确认
fonts是flutter的直接子节点,缩进和uses-material-design完全一致(2个空格) - 所有层级缩进只用2个空格,绝对不能用Tab键(YAML不兼容Tab缩进)
- 定位到报错的第78行,检查是否存在多余空格、缺失的键名,或注释与代码的缩进冲突
- 验证字体文件路径:
fonts/文件夹需和pubspec.yaml同级,文件名拼写完全匹配(区分大小写)
验证步骤
- 保存修改后的
pubspec.yaml,执行flutter pub get刷新依赖 - 重启IDE(缓存可能导致解析异常)
- 测试字体是否生效:
Text('测试自定义字体', style: TextStyle(fontFamily: 'OpenSans', fontWeight: FontWeight.bold))
内容的提问来源于stack exchange,提问作者Rezam
相关产品推荐
相关产品推荐

