如何更改父窗口小部件内所有子窗口小部件的文本?

时间:2019-06-22 18:34:00

标签: flutter widget material-design flutter-layout

我有一个方便的方法,它返回一个Column,其中包含一些Text小部件,我们将其称为mySpecialColumn(String header, String body)。现在我遇到一种情况,我想在使用此方法的一个特定位置更改文本颜色。由于这是非常罕见的例外,因此在Color的方法签名中添加一个(可选的)mySpecialColumn参数似乎是多余的。

我发现我可以用Material包装我的自定义窗口小部件实例,因为它具有textStyle属性。这似乎工作正常,但这是首选的方法吗?

也许对此我错了,但是Material似乎应该主要用于创建自定义的Material小部件,而不是像更改文本颜色那样琐碎的事情?我本来希望有一些通用的小工具,例如Container或类似的小工具,可以更改其子代的文本颜色?

3 个答案:

答案 0 :(得分:1)

DefaultTextStyle 包裹,例如:

    DefaultTextStyle.merge(
        style: TextStyle(color: Colors.grey[400], fontSize: 12),
        child: Column(...),
    )

答案 1 :(得分:0)

您可以将mySpecialColumn包装在Theme小部件中。然后使用ThemeData设置其子级的文本颜色。

Theme(
  // Create a unique theme with "ThemeData"
  data: ThemeData(
    textTheme: TextTheme(
        body1: TextStyle(
        color: Colors.red
        )
    )
  ),
  child: mySpecialColumn(
        ...
       )
);

有关更多详细信息,请参见the docs

答案 2 :(得分:0)

像这样吗?

child: Text(
        'Post',
         style: TextStyle(color: Colors.white),),