首页 > 解决方案 > 如何在 Flutter / GetX 中动态设置 BoxDecoration 主题

问题描述

我将 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 列表文字中的值必须是常量。尝试从列表文字中删除关键字“const”。

它涉及以下部分: color: Get.isDarkMode ? Colors.red : Colors.blue

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

谢谢你。

标签: flutterthemesflutter-getxflutter-theme

解决方案


费利佩 - 你是对的。我花了几个小时阅读和测试,但由于某种原因,我完全错过了显而易见的事情——总是只看装饰/盒子装饰本身,而不是树上。非常感谢您的快速答复。现在可以了。

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

删除后const它可以工作 - 解决方案:

children: <Widget>[


推荐阅读