flutter 如何仅为移动的应用程序而非Web捆绑资产

lrl1mhuk  于 2023-02-20  发布在  Flutter
关注(0)|答案(1)|浏览(144)

我正在尝试构建一个支持自定义字体的Flutter应用程序。奇怪的是,我理想的情况是只想在移动的应用程序中捆绑字体,而不是在Web上捆绑字体,而不在构建时对代码进行重大修改。有什么方法吗?
我将字体文件添加到assets和pubspec中,还使用了google_fonts包。

66bbxpm5

66bbxpm51#

下面是您可以如何做到这一点:
在项目目录中创建两个文件夹:字体和字体_web。
将字体文件添加到字体文件夹。
更新pubspec. yaml文件以在assets部分包含字体文件:
亚姆勒

flutter:
  assets:
    - fonts/

然后,您需要安装google_fonts软件包,以便在应用中轻松流畅地使用自定义字体:
亚姆勒

dependencies:
  google_fonts: ^2.1.0

然后nn您的代码,导入google_fonts包,并使用GoogleFonts小部件指定自定义字体:
进口" Package :扑/料.镖";导入"软件包:谷歌字体/谷歌字体. dart";
dart

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'My App',
      theme: ThemeData(
        textTheme: GoogleFonts.openSansTextTheme(),
      ),
      home: MyHomePage(),
    );
  }
}

如果只包含移动应用程序的字体,您需要使用基于平台的条件导入。然后将pubspec. yaml文件中的assets部分替换为以下代码:
亚姆勒

flutter:
  assets:
    - ${{false ? "ignore" : "fonts/"}}
    - ${{true ? "fonts_web/" : "ignore/"}}

创建fonts_web文件夹,在其中添加一个空的忽略文件。这将阻止您的字体包含在Web构建中。

相关问题