我不明白 Flutter 中 Theme class 的意义

I don't understand the point of the Theme class in Flutter

所以我正在使用 Flutter,我需要一个用于 ListView 的自定义小部件,其中每个小部件都有基于某些数据的自己的主题。

正确的做法应该是这样的:

class CustomWidget extends StatefulWidget {
  CustomWidget({Key key, this.data}) : super(key: key);

  final Color data;
  @override
  _CustomWidgetState createState() => _CustomWidgetState();
}

class _CustomWidgetState extends State<CustomWidget> {
  @override
  Widget build(BuildContext context) {
    return Theme(
      data: ThemeData(primaryColor: widget.data),
      child: Builder(builder: (context) {
        return Container(
          color: Theme.of(context).primaryColor,
        );
      }),
    );
  }
}

但是我这样做的话,到底有什么好处呢?
具体在容器中应用颜色?为什么我不能只做 color: widget.data?

如果 TextTheme 之类的东西自动应用于 Theme() 的每个 Text() 颓废,那不是更有意义吗?

ThemeData 用于配置 Theme 或 MaterialApp 小部件:

https://api.flutter.dev/flutter/material/ThemeData-class.html

primaryColor 值不影响 Text 小部件的颜色,来自 docs:

The background color for major parts of the app (toolbars, tab bars, etc)

如果你想改变文本的颜色,那么你可以使用 textTheme 属性:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        accentColor : Colors.black,
        textTheme: TextTheme(bodyText2: TextStyle(color: Colors.purple)),
        primaryColor : Colors.black
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

primaryColor: 用于appbar

accentColor: 用于前景着色

textTheme:将更改文本的颜色和样式

工作示例:

https://dartpad.dartlang.org/bba537def9dbfa771400309a4e6415ed