我正在使用 GetX 和 Flutter,并通过标准 ThemeData 动态更改应用程序主题。所有这些都适用于 ThemeData 中的属性。
但是,我刚刚实现了 Drawer 小部件,并且还想将 DrawerHeader(类型为 BoxDecoration)中的“装饰”属性设为主题。我想根据选定的主题将 BoxDecoration 中的颜色设为主题,但它似乎只接受常量。我还没有找到任何根据主题动态更改它的方法。
return Drawer(
child: ListView(
padding: EdgeInsets.zero,
children: const <Widget>[
DrawerHeader(
decoration:
BoxDecoration(color: Get.isDarkMode ? Colors.red : Colors.blue),
我收到以下错误:
<块引用>常量列表文字中的值必须是常量。尝试从列表文字中删除关键字“const”。
它涉及到以下部分:
color: Get.isDarkMode ? Colors.red : Colors.blue
任何建议如何做到这一点?
谢谢。
答案 0 :(得分:1)
菲利普 - 你是对的。我花了数小时阅读和测试,但出于某种原因,我完全错过了显而易见的事情 - 总是只看装饰 / BoxDecoration 本身,而不是树上的东西。非常感谢您的快速答复。现在可以使用了。
问题出在以下行:
children: const <Widget>[
删除 const
后它起作用了 - 解决方案:
children: <Widget>[
答案 1 :(得分:0)
基于 Get.color 渲染两个不同的抽屉头,而不是用可变颜色渲染一个抽屉头。