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

如何在Flutter中为所有页面正确添加自定义字体?

Flutter自定义字体不生效的解决方法

1. 确认pubspec.yaml配置正确性

Flutter的yaml配置对缩进要求严格,必须用空格(不能用Tab),确保字体声明格式如下:

flutter:
  uses-material-design: true
  # 声明字体所在目录(可选,方便批量引入)
  assets:
    - assets/fonts/
  # 配置字体族
  fonts:
    - family: MyCustomFont  # 自定义字体族名,后续代码需保持一致
      fonts:
        - asset: assets/fonts/YourFont-Regular.ttf  # 普通字重字体路径
        - asset: assets/fonts/YourFont-Bold.ttf     # 粗体字重字体路径
          weight: 700

注意替换MyCustomFont为你自己的字体族名,assets/fonts/xxx.ttf为实际字体文件路径。

2. 检查字体文件路径与名称

  • 确保字体文件实际存放路径和pubspec中声明的完全一致,包括大小写(iOS/macOS系统对路径大小写敏感)
  • 文件名不能有拼写错误、多余空格,比如PingFangSC.ttf和PingFang SC.ttf是两个不同的文件

3. 在ThemeData中全局配置字体

修改你提供的MyApp代码,在ThemeData中添加fontFamily字段,指定pubspec中配置的字体族名:

import 'package:flutter/material.dart';

import 'constants.dart';
import 'pages/splash_page.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'School',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.orange),
        primaryColor: kPrimaryColor,
        primarySwatch: Colors.orange,
        useMaterial3: false,
        fontFamily: 'MyCustomFont', // 填入pubspec中配置的字体族名
      ),
      home: const SplashPage(),
    );
  }
}

如果仅需给特定文本设置字体,可直接在Text组件的style中指定:

Text(
  '自定义字体测试',
  style: TextStyle(fontFamily: 'MyCustomFont'),
)

4. 清理缓存并重启项目

修改pubspec.yaml后,热重载可能无法加载新字体,需执行以下操作:

  1. 执行命令:flutter clean
  2. 完全关闭当前运行的项目,重新启动(不要用热重载/热重启)

额外注意

如果是要显示中文,需确认你的字体文件本身包含中文字形,部分英文字体不支持中文显示,会自动 fallback 到系统默认字体。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 06:07:37