【发布时间】:2020-08-01 02:35:52
【问题描述】:
有没有办法将ThemeData 类的backgroundColor 设置为LinearGradient?我的应用程序将在不同的主题之间变化,我希望每个主题都有不同的渐变。我尝试将 LinearGradient 设置为 backgroundColor 但给了我一个The argument type 'LinearGradient' can't be assigned to the parameter type 'Color'. 错误。
这是我尝试过的
final _darkTheme = ThemeData(
primarySwatch: Colors.grey,
primaryColor: Colors.black,
brightness: Brightness.dark,
// backgroundColor: const Color(0xFF212121),
backgroundColor: const LinearGradient(colors: [Colors.blue, Colors.green]),
accentColor: Colors.white,
floatingActionButtonTheme:
FloatingActionButtonThemeData(foregroundColor: Colors.black),
dividerColor: Colors.black12,
);
有什么建议吗?我不想手动设置每个容器或有一个额外的常量类以某种方式与每个主题相关联。
【问题讨论】:
-
我认为你最好的选择是满足于常量类。您有什么特别不想使用的理由吗?
-
我宁愿只使用已经存在的类的属性,也不愿做额外的工作。现在我需要弄清楚如何根据选定的主题来选择常量。此外,额外的代码可能会增加错误的可能性。
-
@BadrB 也许有办法扩展 ThemeData?如果我可以为 ThemeData 添加 2 种颜色的附加属性,那么我可以使用这些颜色,例如:渐变:LinearGradient(colors: [Theme.of(context).color1, Theme.of(context).color2])。每当主题发生变化时,这些值就会相应地发生变化。