Google Fonts Flutter包是否会下载字体到设备?能否打包进应用?
Google Fonts 包首次启动字体闪跳问题解答
1. 字体是否为首次启动时动态下载
是,google_fonts 包默认开启运行时动态拉取逻辑:只要你用到的字体没有提前预装在用户设备上,应用首次启动时会自动从Google字体服务端下载对应字体资源,下载完成后才会替换系统默认字体,这就是你看到字体切换延迟的核心原因。
2. 字体打包进应用的实现方案
完全可以将字体资源和应用一同编译打包,完全规避用户侧动态下载,操作步骤如下:
- 第一步:将你用到的所有字体文件(包含所需的全部字重、样式变体)下载到本地,在项目根目录新建
fonts文件夹,将所有字体文件存入该目录 - 第二步:修改
pubspec.yaml配置,声明字体文件夹为项目资源:
flutter: assets: - fonts/
- 第三步:在应用启动前预加载所需字体,同时可关闭运行时下载开关避免异常触发下载:
import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); // 关闭运行时动态下载能力,避免遗漏打包的字体触发下载 GoogleFonts.config.allowRuntimeFetching = false; // 预加载所有用到的字体,示例为用到Noto Sans SC字体的情况 await GoogleFonts.notoSansSc(); runApp(const MyApp()); }
配置完成后重新编译打包应用,所有字体都会内置到安装包中,首次启动不会再出现字体切换延迟的问题。
内容的提问来源于stack exchange,提问作者Isaac Hojo
相关产品推荐
相关产品推荐

