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

Mag*_*s W 9 widget material-design flutter flutter-layout

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

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

也许我对此是错的,但Material似乎它应该主要用于创建自定义Material小部件,而不是像更改文本颜色这样琐碎的事情?我本以为会有一些类似Container或类似的常见小部件可以改变其子项的文本颜色?

Tra*_*der 13

用 包裹它DefaultTextStyle,例如:

    DefaultTextStyle.merge(
        style: TextStyle(color: Colors.grey[400], fontSize: 12),
        child: Column(...),
    )
Run Code Online (Sandbox Code Playgroud)


Mos*_*e G 3

你可以包裹mySpecialColumnTheme小部件中。然后用于ThemeData设置其子项的文本颜色。

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

有关更多详细信息,请参阅文档