Flutter中Google Fonts包无法工作

7

在Flutter的最终构建apk中,google_fonts包无法正常工作。在调试模式下它运行良好,但一旦我构建并安装最终apk,它只显示普通字体。


我也遇到了完全相同的问题。有解决方法吗? - Rohan Nagavardhan
1
它似乎在最新版本中可以工作,我相信,或者可能只是Flutter构建的问题,请尝试使用flutter clean并进行构建。 - sameer kashyap
太酷了,谢谢!我会试一下的! - Rohan Nagavardhan
@sameerkashyap,你最终解决了这个问题吗?我也遇到了同样的问题。谢谢。 - Pathik Patel
你是否为它初始化了许可证? - MNBWorld
6个回答

11

可能是由于网络权限问题,Google字体需要使用网络访问,如果在您的项目中未应用该权限,则在安装应用程序时它将无法工作。

为此,您需要向文件AndroidManifest.xml添加以下行; yourappname / android / app / src / debug / AndroidManifest.xml

您需要添加的行:

<uses-permission android:name="android.permission.INTERNET"/>

google_fonts包已经包含了字体并且已经安装在本地机器上,因此不需要再次使用互联网来检索字体。 - NullByte08
1
为了通过http下载字体,还需要在<app_dir>/android/app/src/main/AndroidManifest.xml中添加android.permission.INTERNET权限。 - Robertas
1
我不知道为什么,但这对我实际上起作用了,在 google_fonts: ^2.0.0 flutter: 2.2.0 上,在另一个项目中没有添加此权限,但在那种情况下仍然有效。无论如何,感谢 @Lunedor。 - Pathik Patel

3

我不认为这是互联网问题。大多数情况下,使用Flutter包的字体在Pubspec文件中存在错误。

请检查您的Pubspec.yaml文件。确保您的Google字体包是以这种方式格式化的

version: 1.0.0+1
environment:
  sdk: ">=2.7.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  google_fonts: ^1.1.0

flutter:
  assets:
    - google_fonts/ # you only need this line and nothing in the fonts area per https://pub.dev/packages/google_fonts 

谢谢!这并没有帮助,因为他们把这个放在自述文件的最底部。 - Chris
兄弟,谢谢你!那行代码对我有用。请接受这个答案为正确。 - MNBWorld

1

要使用Google Fonts,您必须为其初始化许可证。

请按照以下步骤操作:

假设您正在使用此内容:

fontFamily: GoogleFonts.shadowsIntoLight().fontFamily,

因此,您正在使用shadowsIntoLight字体。 要获得许可,请先从Google Fonts下载特定的字体。 下载zip文件后,请将其解压缩。

在您的Flutter应用程序文件的根目录中创建名为google_fonts的文件夹。

=> 现在将.ttfOFL.txt文件(位于提取的文件夹中)放入之前创建的google_fonts文件夹中。

[注意:只有OFL.txt对于您的所有字体就足够了。]

这是我的样子: enter image description here

现在进入main.dart文件:

=> 在void main() {runApp(MyApp());}内添加以下行:

void main() {
  LicenseRegistry.addLicense(() async* {
    final license = await rootBundle.loadString('google_fonts/OFL.txt');
    yield LicenseEntryWithLineBreaks(['google_fonts'], license);
  });

  runApp(...);
}

并导入以下内容:

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

现在关闭您的应用程序并重新启动它,然后发布:

flutter build apk --release

1
请确保您已在 /android/app/src/main/AndroidManifest.xml 文件中添加了以下行:
<uses-permission android:name="android.permission.INTERNET"/>

0

Google fonts 使用网络,所以您可能需要更新 manifest.xml 文件中的依赖项。

<uses-permission android:name="android.permission.INTERNET"/>

否则,您可以尝试将Google字体添加到资产文件夹中,使其在离线状态下可用。
然后,更改代码:
// Online Code
Text(
  'This is hammersmithOne from Google Font'
  style: GoogleFonts.hammersmithOne(),
),

// Offline Code
Text(
  'This is hammersmithOne from Google Font',
   style: TextStyle(fontFamily: 'hammersmithOne') // This is loaded from assets
),

如需进一步参考,请参阅this文章。


0

目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接