android Flutter:[致命错误]无法使用自定义字体

68bkxrlz  于 2022-11-27  发布在  Android
关注(0)|答案(4)|浏览(285)

我没有得到任何错误在正常的Flutter运行,但APK崩溃与以下错误:

E/flutter (18669): [ERROR:flutter/third_party/txt/src/minikin/FontFamily.cpp(184)] Could not get cmap table size!
E/flutter (18669):
F/flutter (18669): [FATAL:flutter/third_party/txt/src/minikin/FontCollection.cpp(95)] nTypefaces == 0

我已经尝试了我在网上找到的所有解决方案:

  • 出版规格yaml具有uses-material-design: true
  • GoogleFonts下载的字体不能损坏
  • 我也试过其他字体都给予同样的错误
  • 我已经检查了我的代码,并不认为我有任何错误引用字体
  • 多次尝试扑动清洁

pubspec.yaml代码段:

fonts:
    - family: Open Sans
      fonts:
        - asset: Open Sans/OpenSans-Regular.ttf

main.dart代码片段:

theme: ThemeData(
          primarySwatch: MaterialColor(0xFF8c7ae6, primarySwatch),
          primaryColor: Color(0xFF8c7ae6),
          brightness: Brightness.light,
          fontFamily: 'Open Sans', // using font
          textTheme: TextTheme(button: TextStyle(fontWeight: FontWeight.w400)),
          appBarTheme: AppBarTheme(
              brightness: Brightness.light,
              iconTheme: IconThemeData(color: Color(0xFF8c7ae6))),
          primaryColorLight: Color(0xFF9c88ff)),

字体文件位于项目级别的名为“Open Sans”的文件夹中。

8gsdolmq

8gsdolmq1#

删除“Open Sans”之间的空格,使所有位置都是“OpenSans”。

unhi4e5o

unhi4e5o2#

现在我们总是使用系统默认字体,而在Flutter应用中添加自定义字体非常容易。首先,你需要在你的项目文件夹中创建一个新的文件夹。所以不是在“lib”文件夹中,而是简单地在你的主项目文件夹中。
你可以随意命名这个文件夹,比如“assets”,或者你可以直接命名为“fonts”,我会将它命名为assets,然后在assets文件夹中创建一个“fonts”文件夹。我想将它放在assets文件夹中。
现在我想使用一对夫妇的字体,你会发现一个zip文件附件,其中包括字体,我将在这里使用,例如从“https://fonts.google.com/download?family=Open%20Sans“下载
例如,我在这里引入了两种字体,OpenSans为粗体和常规版本,Quicksands为粗体、浅色、中等和常规版本。
现在添加了这些字体,我们仍然不能在应用程序中自动使用它们。要在应用程序中解锁它们,并将它们包含在Flutter生成的应用程序文件中,最后。您需要转到“pubspec.yaml”文件,这也是您的全局管理工具,如果您向下滚动,您实际上会找到这个注解掉的区域,它已经为您提供了如何添加字体的示例。因此,您只需通过删除散列符号将其注解回去即可。
然后你会看到字体缩进了两个空格,在yaml文件中,空格很重要,你可以在破折号和白色后面定义一个“家族”键,这是字体的名称,我在这里应该与字体的名称相匹配,但理论上这取决于你。
例如在文件pubspec.yml中:

fonts:
    - family: OpenSans
      fonts:
        - asset: assets/fonts/OpenSans-Bold.ttf
        - asset: assets/fonts/OpenSans-Regular.ttf
          weight: 700

如何从字体中使用:
例如在文件main.dart中:

return MaterialApp(
      title: 'Personal Expenses',
      theme: ThemeData(
        primarySwatch: Colors.purple,
        fontFamily: 'OpenSans'
      ),
      home: const MyHomePage(),
    );
o7jaxewo

o7jaxewo3#

您可以使用google_fonts包来获取Google Fonts上可用的所有字体。
将google_fonts包添加到pubspec依赖项中。

dependencies:
  flutter:
    sdk: flutter
  google_fonts:

main.dart中导入google字体包
使用GoogleFonts

ThemeData(
    textTheme: GoogleFonts.openSansTextTheme(
      Theme.of(context).textTheme,
    ),
  )
ogq8wdun

ogq8wdun4#

最近我和我的同事一起经历了这个错误,仍然不确定到底是什么修复了它...但是在重新安装了flutter sdk之后,我的同事修复了这个错误(因为cpp文件),而我在升级了flutter版本之后也修复了这个错误。
(This鉴于你已经尝试过Flut0101的答案,顺便说一句,因为这是一个常见的问题)

相关问题