Flutter:使用 .copyWith 更改 ThemeData 中的字体系列

Jos*_*zet 4 mobile dart flutter

我知道您可以ThemeData使用自己的字体定义一个新对象,如下所示:

ThemeData(fontFamily: 'Roboto')
Run Code Online (Sandbox Code Playgroud)

但是,我想ThemeData使用以下copyWith方法复制现有的:

ThemeData.dark().copyWith(...)
Run Code Online (Sandbox Code Playgroud)

fontFamiliy可悲的是,中没有任何争论copyWith。我只想更改 fontFamily 而不是定义一个全新的TextTheme.

如何复制现有字体ThemeData并更改其字体系列?

小智 11

尝试这样的事情:

ThemeData darkTheme = ThemeData.dark().copyWith(
    textTheme: ThemeData.dark().textTheme.apply(
          fontFamily: 'Roboto',
        ),
    primaryTextTheme: ThemeData.dark().textTheme.apply(
          fontFamily: 'Roboto',
        ),
); 
Run Code Online (Sandbox Code Playgroud)

如果你看一下来源,你会发现这是同样的事情:

在此输入图像描述

这是同一件事:https ://github.com/flutter/flutter/issues/41276

我不知道为什么你需要复制字体,但有时在主题 MaterialApp 中设置 fontFamily 是有意义的。关于这一点在:Changing the font family in Flutter when using ThemeData.dark() or ThemeData.light()