如何仅为移动应用程序而不是 Web 捆绑资产

问题描述 投票:0回答:1

我正在尝试构建一个支持自定义字体的 Flutter 应用程序。怪癖是,理想情况下,我只想将字体捆绑在移动应用程序中,而不是在 Web 上,而无需在构建时对代码进行重大更改。 有什么方法吗?

我将字体文件添加到资产和 pubspec 中,还使用了 google_fonts 包。

flutter flutter-animation
1个回答
0
投票

你可以这样做:

在项目目录中创建两个文件夹:fonts 和 fonts_web。

将字体文件添加到字体文件夹中。

更新您的 pubspec.yaml 文件以将字体文件包含在资产部分中:

yaml

flutter:
  assets:
    - fonts/

然后您需要安装 google_fonts 包,以便在您的应用程序中轻松顺畅地使用自定义字体:

yaml

dependencies:
  google_fonts: ^2.1.0

然后 nn 你的代码,导入 google_fonts 包,并使用 GoogleFonts 小部件指定自定义字体:

导入'package:flutter/material.dart'; 导入“包:google_fonts/google_fonts.dart”;

飞镖

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'My App',
      theme: ThemeData(
        textTheme: GoogleFonts.openSansTextTheme(),
      ),
      home: MyHomePage(),
    );
  }
}

对于仅包含移动应用程序的字体,您需要使用基于平台的条件导入。然后用下面显示的代码替换 pubspec.yaml 文件中的资产部分:

yaml

flutter:
  assets:
    - ${{false ? "ignore" : "fonts/"}}
    - ${{true ? "fonts_web/" : "ignore/"}}

创建fonts_web文件夹,在里面添加一个空的ignore文件。它会阻止你的字体被包含在网络构建中。

© www.soinside.com 2019 - 2024. All rights reserved.