在Flutter包中使用自定义字体

vnzz0bqm  于 2023-05-19  发布在  Flutter
关注(0)|答案(1)|浏览(170)

我有一个项目,其文件夹结构如下:

app/
widgets/

其中app包含主要的flutter应用程序,widgets是一个flutter包,包含app和任何其他可能需要的项目使用的可重用组件。
我试图在widgets/文件夹中的一个小部件中使用自定义字体,但当我运行app并尝试使用此小部件时,无法识别字体,并且小部件标题不显示(可能是因为字体导入不正确)。
我还没有在app/pubspec.yaml中导入字体(不确定是否应该导入)
我将自定义字体添加到widgets/assets/fonts文件夹并导入widgets/pubspec.yaml,如下所示:

flutter:
  fonts:
    - family: <FONT_NAME>
      fonts:
        - asset: assets/fonts/<FILE>
          weight: 400

我在widgets/<WIDGET>中使用这个字体,就像这样:

final style = TextStyle(fontFamily: <FONT_NAME>, fontWeight: FontWeight.w600, ontSize: 48, height: 48);
....

我在这个设置中错过了什么?
OBS:app/是一个Web项目,不确定它是否有任何区别。

zpgglvta

zpgglvta1#

在我的情况下,它最终成为一个与字体导入无关的问题。
我使用widgets/<WIDGET>FontStyleheight属性作为绝对值,而不是乘数。例如:使用

TextStyle(fontFamily: '<FAMILY>', fontWeight: FontWeight.w700, fontSize: 48, height: 48)

而不是

TextStyle(fontFamily: '<FAMILY>', fontWeight: FontWeight.w700, fontSize: 48, height: 1)

因此,字体被正确导入,但它没有被呈现,因为字体的实际高度是48 * 48 = 2304。
app/中使用widgets/字体的最终设置是:

  • app/pubspec.yaml删除字体导入
  • 将字体从widgets/assets/fonts移动到widgets/lib/fonts->,以便将字体与代码源文件一起导入
  • 更新了widgets/pubspec.yaml,以从lib/fonts而不是assets/fonts导入文件。

现在,当在app/pubspec.yaml中导入widgets/时,自定义字体将按预期工作。

相关问题