0

我在我的应用程序中使用 Google 字体。我已经在我的应用程序中成功地做到了这一点,但由于某种原因,我无法在 SliverAppBar 中使用它。我得到的错误是:

The constructor being called isn't a const constructor.

我试图更改字体的代码是:

SliverAppBar(
          pinned: true,
          snap: false,
          floating: false,
          expandedHeight: 200.0,

          leading: new IconButton(
            color: Colors.black38,
            icon: new Icon(Icons.arrow_back),
            onPressed: () {
              Navigator.pushReplacementNamed(
                  context,
                  '/');
            },
          ),

          backgroundColor: Globals().appBar,
          flexibleSpace: const FlexibleSpaceBar(
            title:
            Text('Inventory', style: GoogleFonts.acme(color: Globals().white_text,fontSize: 20),) ,
            // Text('Inventory'),
            background: FittedBox(fit:BoxFit.cover,child: Image(image:AssetImage('images/bag.jpg'))),
          ),
        ),

如果我是您在代码中看到的简单文本框, // Text('Inventory'),那么我没有问题。您如何在 SliverAppbar 中使用 Google 字体?

4

1 回答 1

0

所以,我认为 google_fonts 包类没有实现 const 构造函数,因为默认情况下,它将为字体执行 HTTP Internet 请求。这意味着字体是在 RUNTIME 加载的,这意味着它不能是 const。即使您使用“GoogleFonts.config.allowRuntimeFetching = false;”关闭该功能,我认为包作者也不打算让您以这种方式使用它;因此没有 const 构造函数。

唯一的解决方法是只使用添加自定义字体的常规方法,而不使用 google_fonts 包。这实际上更安全,因为字体将被烘焙到您的应用程序中,并且可以在没有 Internet 的情况下安全使用。唯一的缺点是它会使您的应用程序更大。

这是添加自定义字体的当前方法的链接:

https://docs.flutter.dev/cookbook/design/fonts

于 2022-02-12T16:20:42.483 回答