1

我有一个由许多不同的 Dart 和 Flutter 包组成的应用程序。事实证明,这很有用,因为我能够将字体、颜色和小部件等内容移动到独立的样式指南包中,然后我们可以在所有其他应用程序中使用它。

在包中使用自定义字体在Flutter 中的工作方式略有不同,因为我们需要将assets目录添加为子目录lib而不是兄弟目录:

将资产添加到包中

…然后pubspec.yaml像这样注册这些资产:

assets:
 - packages/receipt_widget/assets/fonts/my_font.ttf
 // other asset declarations

这对于自定义字体和图标(png、jpg 等)完全可以正常工作。我的问题是相同的方法不适用于自定义图标字体

脚步:

  • 使用IcoMoonFlutter Icon生成自定义图标字体
  • 将生成的字体放入assets/fonts如上所示的目录中
  • 将生成的dart文件放入lib文件夹
  • 在代码中引用自定义图标并将其放入Icon小部件中,如下所示:
Icon(MyFontIcon.ic_heart);

flutter clean为了安全起见,我在部署干净的构建之前从设备/模拟器运行并卸载该应用程序。然后我留下一个问号而不是引用的图标。

注意。当直接在 Flutter 应用程序中而不是在包中使用时,相同的图标可以正常工作。

4

1 回答 1

3

要使用自定义包中的 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

(您可能必须重新启动您的应用程序并完全捆绑字体才能正确加载并且可能flutter clean只是为了确保运行)

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

进入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:56.470 回答