我的主题是这样的:
theme: ThemeData(
primaryColor: themeModel.primaryColor,
...
),是的,是动态的。
问题是:如果用户设置,比方说,indigo[100],一些项目(如bottomAppBar)在该浅色上有亮图标(能见度很差)。
我认为项目调整他们的文本颜色与给定的颜色属性,但它似乎不是那样的工作。
所以,我必须手动设置那个属性。但是我找不到主颜色上文本颜色的Theme属性(在材料文档中名为onPrimary )。
我发现的是Theme.of(context).colorScheme.onPrimary,但似乎不太好用。它总是返回相同的颜色。
我知道我可以得到原色的对比颜色,并将其设置如下:
theme: ThemeData.from(
colorScheme: ColorScheme(
primary: themeModel.primaryColor
onPrimary: themeModel.onPrimaryColor
...
)
)但我敢肯定,如果你不通过这些属性,扑扑就会自动生成它们.难到不是么?
我发现的另一件事是Theme.of(context).primaryIconTheme.color。那个属性正在返回我正在寻找的颜色。,但是当它的名称声明时,它应该只应用于图标,而不是文本,即使它们可能会返回相同的黑色变体。
我想知道的是
,这是它应该工作的方式吗?,我应该给自己写onPrimary属性吗?代码质量可以用primaryIconTheme.color作为文本颜色吗?还是遗漏了什么?
发布于 2020-03-26 08:08:45
默认的ThemeData是ThemeData.light(),primaryColor和accentColor设置为Colors.blue,Card和Scaffold背景设置为Colors.white。有三种类型的textTheme:
如果将primaryColor更改为Colors.white,则primaryTextTheme.color不会自动更改值以形成对比。
ThemeData(
primaryColor: Colors.white,
primaryTextTheme: Theme.of(context).primaryTextTheme.apply(
bodyColor: Colors.black,
displayColor: Colors.black,
)
)希望这对你有任何帮助。
https://stackoverflow.com/questions/60852766
复制相似问题