gpt4 book ai didi

flutter - 我不明白Flutter中主题类的意义

转载 作者:行者123 更新时间:2023-12-03 04:45:40 25 4
gpt4 key购买 nike

所以我在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这样的东西自动应用到 Text()的每个 Theme()衰变中,这会更有意义吗?

最佳答案

ThemeData用于配置主题或MaterialApp小部件:

https://api.flutter.dev/flutter/material/ThemeData-class.html
primaryColor值不影响docsText小部件的颜色:

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:用于应用栏
accentColor:用于为前景着色
textTheme:将更改文本的颜色并设置其样式

工作示例:

https://dartpad.dartlang.org/bba537def9dbfa771400309a4e6415ed

关于flutter - 我不明白Flutter中主题类的意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62369817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com