如何在 Flutter / GetX

时间:2021-03-28 21:03:10

标签: flutter themes getx flutter-getx flutter-theme

我正在使用 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

任何建议如何做到这一点?

谢谢。

2 个答案:

答案 0 :(得分:1)

菲利普 - 你是对的。我花了数小时阅读和测试,但出于某种原因,我完全错过了显而易见的事情 - 总是只看装饰 / BoxDecoration 本身,而不是树上的东西。非常感谢您的快速答复。现在可以使用了。

问题出在以下行: children: const <Widget>[

删除 const 后它起作用了 - 解决方案:

children: <Widget>[

答案 1 :(得分:0)

基于 Get.color 渲染两个不同的抽屉头,而不是用可变颜色渲染一个抽屉头。