如何设置特定容器中所有文本的颜色扑扑?

时间:2019-08-23 10:00:58

标签: flutter dart

我不想更改整个应用程序的。只是一个容器。我可以用其他小部件或其他包装吗?

5 个答案:

答案 0 :(得分:6)

仅将某些TextStyle属性应用于应用程序的子树。您可以使用DefaultTextStyle

DefaultTextStyle(
  child: Container(child: /* your subtree */),
  style: TextStyle(color: Colors.red),
),

答案 1 :(得分:2)

使用 DefaultTextStyle.merge 保留您的主题并更改颜色。

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

答案 2 :(得分:1)

如果您使用import SparkExtensions._ val ds: Dataset[MyData] = df.to[MyData] ds.distinct.count res11: Long = 3 ds.printSchema root |-- value: integer (nullable = false) 小部件,则可以使用其主题属性并设置不同的MaterialApp主题,然后在应用程序中的任何位置调用它们。例如,以下代码定义了3个不同的文本主题:

Text

然后您可以像这样在应用程序中的任何位置调用特定主题(标题):

void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: "Time Tracker", theme: ThemeData( textTheme: TextTheme( headline: TextStyle(fontSize: 72.0, fontWeight: FontWeight.bold,color: Colors.blue), title: TextStyle(fontSize: 36.0, fontStyle: FontStyle.italic,color: Colors.red), body1: TextStyle(fontSize: 14.0, fontFamily: 'Hind',color: Colors.yellow), ), ), home: LandingPage(), ); } }

哪个给您标题Text('Home Page',style: Theme.of(context).textTheme.headline,)

答案 3 :(得分:0)

我拥有所有样式的功能

TextStyle largeTextStyle() => TextStyle(fontSize: 150);

那我就做

Text("blah", style:largeTextStyle())

答案 4 :(得分:0)

在我看来,Flutter的回答很好。但是ThemeData的强大功能超出了您的想象。这是关于{strong>部分应用程序主题的official documentation

您可以提供一个Theme来包装您的容器以提供一个新的主题。这是两种解决方法:

1。创建唯一的ThemeData

/*Not recommended, this could make a totally different If you just want a little part changed.*/
Theme(
  // Create a unique theme with "ThemeData"
  data: ThemeData(
    textTheme: /* Your Text Theme*/,
  ),
  child: Container(
    onPressed: () {},
    child: Text("Your Text Here"),
  ),
);

2。扩展父主题

Theme(
  // Find and extend the parent theme using "copyWith". See the next
  // section for more info on `Theme.of`.
  data: Theme.of(context).copyWith(textTheme: /* Provide your theme here! */),
  child: Container(
    child: Text("your text here"),
  ),
);

您还可以使用已有的主题,但要稍作改动:

Theme.of(context).textTheme.copyWith(
  body1: Theme.of(context).textTheme.body1.copyWith(color: Colors.red),
)