3

我有一个名为 Handwriter 的包。它以自定义字体编写文本。我将 .ttf 保存在 lib/third_party/ 中。在其 pubspec.yaml 中,我添加了字体:

flutter:
    uses-material-design: true
    fonts:
     - family: FancyHandwriting
       fonts:
        - asset: lib/third_party/FancyHandwriting-Regular.ttf

我的应用程序导入了这个包。在其 pubspec.yaml 中,我将 Handwriter 添加为依赖项:

dependencies:
  flutter:
    sdk: flutter
  handwriter:
    path: ../handwriter
  model:
    path: ../model

但是,当我在我的应用程序中使用它时,字体根本不会显示。为什么?

final defaultStyle = TextStyle(
      fontFamily: 'FancyHandwriting',
      fontSize: 130);
4

4 回答 4

2

无需在包消费者应用程序中重新添加字体,您可以使用:

final defaultStyle = TextStyle(
  fontFamily: 'FancyHandwriting',
  package: 'handwriter',
  fontSize: 130,
);

这也相当于做:

final defaultStyle = TextStyle(
  fontFamily: 'packages/handwriter/FancyHandwriting',
  fontSize: 130,
);
于 2020-08-30T04:01:34.207 回答
1

要使用自定义包中的 Flutter Icon 字体,您可以按照以下步骤操作:

创建一个颤动的图标字体

您可以为该https://www.fluttericon.com使用颤振图标

将文件放入您的包中

确保将文件复制到文件.ttf。不仅仅是资产,就像您在根项目中所做的那样。/lib

示例路径:

/packages/my_awesome_fontpackage/lib/assets/MyIconFont.ttf

(见https://zubairehman.medium.com/how-to-use-custom-fonts-images-in-flutter-package-c2d9d4bfd47a

将字体添加到您的项目中

现在打开你的包pubspec.yaml文件并将字体添加为带有包路径的资产:

flutter:
  fonts:
  - family:  MyIconFont
    fonts:
      - asset: packages/my_awesome_fontpackage/assets/MyIconFont.ttf

(您可能必须重新启动您的应用程序并完全捆绑才能正确加载字体)

现在将包声明添加到字体飞镖文件

进入my_icon_font.dart文件并将_kFontPkg那里的常量更改为您的包名称。


class MyIconFont {
  MyIconFont._();

  static const _kFontFam = 'MyIconFont';
  static const String? _kFontPkg = 'my_awesome_fontpackage';

  static const IconData bell = ...
  ....
}
于 2021-09-28T11:30:00.210 回答
1

根据这个:https://flutter.dev/docs/cookbook/design/package-fonts你必须在你的应用程序的 pubspec.yaml 中声明包的字体:

声明字体资源 现在你已经导入了包,告诉 Flutter 在哪里可以从 awesome_package 中找到字体。

要声明包字体,请在字体路径前加上 packages/awesome_package。这告诉 Flutter 在包的 lib 文件夹中查找字体。

IE:

dependencies:
  flutter:
    sdk: flutter
  handwriter:
    path: ../handwriter
  model:
    path: ../model

flutter:
    uses-material-design: true
    fonts:
     - family: FancyHandwriting
       fonts:
        - asset: packages/handwriter/third_party/FancyHandwriting-Regular.ttf

请注意,您将资产声明为来自包 - 您不必在应用程序的lib.

这背后的原因是并非每个包中的所有字体都可以使用,因此这会缩小最终应用程序的大小。

于 2019-11-05T00:56:03.910 回答
0

不要忘记您还必须将字体导入/复制到您的字体资产目录中。在您的情况下,请确保将它们放在lib/third_party/. (参见第 1 步 - https://flutter.dev/docs/cookbook/design/fonts)。

于 2019-11-05T03:34:18.497 回答