【问题标题】:How can I change the text of all child widgets inside a parent widget?如何更改父小部件内所有子小部件的文本?
【发布时间】:2019-11-05 04:06:45
【问题描述】:

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

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

也许我错了,但Material 似乎应该主要用于创建自定义Material 小部件,而不是像更改文本颜色这样微不足道的事情?我本来希望有一些常见的小部件,如Container 或类似的小部件,可以改变它的孩子的文本颜色?

【问题讨论】:

标签: flutter widget material-design flutter-layout


【解决方案1】:

DefaultTextStyle包裹它,例如:

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

【讨论】:

    【解决方案2】:

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

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

    更多详情见the docs

    【讨论】:

      【解决方案3】:

      这样的?

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-25
        • 2020-01-01
        • 1970-01-01
        相关资源
        最近更新 更多