Mar*_*ary 8 fonts package flutter dart-packages
我有一个名为 Handwriter 的包。它以自定义字体写入文本。我将 .ttf 保存在 lib/third_party/ 中。在其 pubspec.yaml 中,我添加了字体:
flutter:
uses-material-design: true
fonts:
- family: FancyHandwriting
fonts:
- asset: lib/third_party/FancyHandwriting-Regular.ttf
Run Code Online (Sandbox Code Playgroud)
我的应用程序导入这个包。在其 pubspec.yaml 中,我添加 Handwriter 作为依赖项:
dependencies:
flutter:
sdk: flutter
handwriter:
path: ../handwriter
model:
path: ../model
Run Code Online (Sandbox Code Playgroud)
但是,当我在应用程序中使用该字体时,该字体根本不显示。为什么?
final defaultStyle = TextStyle(
fontFamily: 'FancyHandwriting',
fontSize: 130);
Run Code Online (Sandbox Code Playgroud)
无需在包消费者应用程序中重新添加字体,您可以使用:
final defaultStyle = TextStyle(
fontFamily: 'FancyHandwriting',
package: 'handwriter',
fontSize: 130,
);
Run Code Online (Sandbox Code Playgroud)
这也相当于做:
final defaultStyle = TextStyle(
fontFamily: 'packages/handwriter/FancyHandwriting',
fontSize: 130,
);
Run Code Online (Sandbox Code Playgroud)
要使用自定义包中的 Flutter Icon 字体,您可以按照以下步骤操作:
您可以使用 flutter 图标https://www.fluttericon.com
确保将.ttf
文件复制到文件夹中/lib
。不仅仅是资产,就像您在根项目中所做的那样。
示例路径:
/packages/my_awesome_fontpackage/lib/assets/MyIconFont.ttf
Run Code Online (Sandbox Code Playgroud)
(参见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
Run Code Online (Sandbox Code Playgroud)
(您可能需要重新启动应用程序并完全捆绑才能正确加载字体)
进入该my_icon_font.dart
文件并将其中的常量更改_kFontPkg
为您的包名称。
class MyIconFont {
MyIconFont._();
static const _kFontFam = 'MyIconFont';
static const String? _kFontPkg = 'my_awesome_fontpackage';
static const IconData bell = ...
....
}
Run Code Online (Sandbox Code Playgroud)
根据此: https: //flutter.dev/docs/cookbook/design/package-fonts您必须在应用程序的 pubspec.yaml 中声明包的字体:
\n\n\n\n\n声明字体资源\n 现在您\xe2\x80\x99 已经导入了包,告诉\n Flutter 在哪里可以从awesome_package 中找到字体。
\n\n要声明包字体,请在字体路径前加上\npackages/awesome_package。这告诉 Flutter 在包的 lib 文件夹中查找字体。
\n
IE:
\n\ndependencies:\n flutter:\n sdk: flutter\n handwriter:\n path: ../handwriter\n model:\n path: ../model\n\nflutter:\n uses-material-design: true\n fonts:\n - family: FancyHandwriting\n fonts:\n - asset: packages/handwriter/third_party/FancyHandwriting-Regular.ttf\n
Run Code Online (Sandbox Code Playgroud)\n\n请注意,您将资产声明为来自包 - 您不必在应用程序的lib
.
其背后的原因是并非每个包中的所有字体都可以使用,因此这会缩小最终应用程序的大小。
\n 归档时间: |
|
查看次数: |
1940 次 |
最近记录: |