【问题标题】:How to change Font Family using setState in Flutter?如何在 Flutter 中使用 setState 更改字体系列?
【发布时间】:2020-06-29 07:00:30
【问题描述】:

我想在单击按钮时更改我的Text Widget 字体系列。

这意味着我创建了一个Container 并在这个Container 中添加了多个带有GestureDetector 小部件的文本样式小部件。因此,每当我单击特定字体系列时,我都想更改我的 Text 小部件字体系列。

关于执行此类功能的任何建议。

【问题讨论】:

标签: flutter


【解决方案1】:

使用变量存储字体名称

在您的 text 小部件中引用它

然后调用setState更新变量和UI的值

String fontName;

//your TextWidget
Text("some text for testing",
     style: TextStyle( fontFamily: fontName )
)

//function to update the value
_updateFont(String name){
  setState((){
    fontName = name;
  });
}

确保您正在导入要使用的字体 将它们添加到fonts 下的pubspec.yaml 文件中

- family: font1
  fonts:
    - asset: assets/fonts/font1.ttf

【讨论】:

  • 我有字体系列的列表,但是当我点击任何特定的字体系列时我想改变 container Text 字体系列应该改变。 @Vicky Salunkhe
  • 是的,我知道你试过代码了吗?只需在 container 小部件中使用 text 小部件,并在您想要更新字体时调用该函数
  • 嗨@JaiminBhikadiya 如果可能的话也支持答案
【解决方案2】:

希望这可行或进行相应修改:

文本小部件内的代码:

Text("Your Text",
              style: tapped
              ?TextStyle(fontFamily: 'Your-Font-Family')
              :TextStyle(fontFamily: 'Your-Second-Font-Family'),
              ),

手势检测器内的代码:

 GestureDetector(
              child: your child widget,
              onTap: () {
              setState(() {
                tapped = !tapped;
              });
            }),

记得在你的小部件类中定义bool tapped;

不过,如果您遇到任何困难,请将代码添加到评论中,以便我可以帮助您。

【讨论】:

  • 我有字体系列列表,所以当我应用上述代码时可以吗? @Adithya Shetty
  • 使用我的方法,您只能在文本的两个字体系列之间切换。
猜你喜欢
  • 2021-01-21
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-27
  • 2013-01-22
相关资源
最近更新 更多