因此,对于配色方案而言,材料应用程序
colorScheme: ThemeData().colorScheme.copyWith(
primary: Color(0xff075e54),
secondary: Color(0xffeacb2d),
),
我的问题是ThemeData().colorScheme.copyWith()
工作并给出2种颜色--主色和secondary.but --如果我像ColorScheme().copyWith()
那样去做,它不工作吗?为什么?ThemeData().colorScheme.copyWith()
和ColorScheme().copyWith()
有什么区别?
发布于 2022-11-18 06:32:55
ThemeData
是一个Flutter
类,当您得到以下内容时,它的所有属性都带有默认值:
ThemeData().colorScheme.copyWith()
您正在尝试在颤振框架中的内置colorSheme
上获取ThemeData
属性,然后使用copyWith()
方法重写其值。基本上,这就像您得到一个已经存在的属性,然后更新它。
现在,当您使用:
ColorScheme()
您正在调用ColorSheme
类的构造函数,如您所见:
const ColorScheme({
required this.brightness,
required this.primary,
required this.onPrimary,
Color? primaryContainer,
Color? onPrimaryContainer,
required this.secondary,
required this.onSecondary,
Color? secondaryContainer,
Color? onSecondaryContainer,
/*...*/
有些属性是必需的,因此为了调用一个完整的新ColorSheme
构造函数,您需要为其中的每个required
属性提供值,然后您可以这样说。
ColorScheme(/* after all properties are set*/).copyWith()
所以你可以复制它并覆盖它的值。
ColorScheme
有factory
构造函数,它允许您根据材料设计方案色彩 (如ColorScheme.light()
、ColorScheme.dark()
)获得默认值.它可以直接使用,也可以重写其值,如下所示:
ColorScheme.light().copyWith()
https://stackoverflow.com/questions/74490835
复制