You need to enable JavaScript to run this app. Flutter使用Google Fonts时退出重启报MissingPluginException错误如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

Flutter使用Google Fonts时退出重启报MissingPluginException错误如何解决?

问题原因

该报错出现在应用从后台恢复(未杀死进程)场景下,是由于你在全局ThemeData中直接调用GoogleFonts.dmSans().fontFamily时,GoogleFonts插件会触发路径访问逻辑,但此时Flutter平台通道尚未完成重新绑定,path_provider的原生实现未完成注册,因此抛出MissingPluginException。杀死进程后重启时平台通道初始化流程完整,所以运行正常。

解决方案

方案1(最推荐,性能最优):本地打包字体,关闭运行时下载

如果你不需要动态从谷歌服务器拉取字体,直接把字体文件打包到应用内,彻底避免触发路径访问逻辑:

  1. 下载DM Sans字体文件,放到项目assets/fonts/目录下
  2. 在pubspec.yaml中注册字体:
flutter:
  fonts:
    - family: DM Sans
      fonts:
        - asset: assets/fonts/DMSans-Regular.ttf
        - asset: assets/fonts/DMSans-Bold.ttf
          weight: 700
        - asset: assets/fonts/DMSans-Italic.ttf
          style: italic
  1. 修改main.dart代码:
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  // 关闭GoogleFonts运行时拉取,彻底避免调用path_provider
  GoogleFonts.config.allowRuntimeFetching = false;
  setupLocator();
  final bgColor = Color(0xfff5f5f5);
  runApp(
    MaterialApp(
      title: "App Name",
      darkTheme: ThemeData(
        primarySwatch: Colors.orange,
        primaryColorDark: Color(0xff444444),
        accentColor: Colors.orange,
        appBarTheme:
            AppBarTheme(backgroundColor: Colors.transparent, elevation: 0),
        brightness: Brightness.dark,
        // 直接使用注册的字体名
        fontFamily: 'DM Sans',
      ),
      theme: ThemeData(
        primarySwatch: Colors.orange,
        primaryColorLight: Color(0xffffffff),
        scaffoldBackgroundColor: bgColor,
        appBarTheme: AppBarTheme(backgroundColor: bgColor, elevation: 0),
        brightness: Brightness.light,
        fontFamily: 'DM Sans',
      ),
    ),
  );
}

方案2:保留运行时拉取字体能力

如果确实需要动态拉取字体,调整字体加载时机,不要在全局Theme初始化时触发:

  • 把ThemeData的生成逻辑移到首页面的StatefulWidget中,在initState中异步加载字体完成后再赋值主题
  • 或者使用ThemeData的fontFamily动态取值,加载完成前使用系统默认字体兜底

其他排查点

  • 检查pubspec.yaml中path_provider和google_fonts版本是否为最新兼容版本,版本不匹配也会触发该问题
  • 检查Android端AndroidManifest.xml中MainActivity的android:launchMode配置,避免使用singleInstance,建议改为singleTop或standard

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 19:06:02