Flutter 当标准颤振小部件具有硬编码主题(如图标的颜色)时,扩展它的正确方法是什么?

Flutter 当标准颤振小部件具有硬编码主题(如图标的颜色)时,扩展它的正确方法是什么?,flutter,widget,Flutter,Widget,我想更改标准颤振小部件中使用的V形图案的颜色ExpansionPanel()。这可以在packages/flatter/lib/src/material/expansion_panel.dart中找到 但是我发现这个V形符号的图标颜色比ExpandIcon()中的图标颜色低一级。这在packages/flatter/lib/src/material/expand_icon.dart中 将expand_icon.dart拉入我的应用程序并更新/覆盖硬编码颜色的正确方法是什么 颜色的定义如下:

我想更改标准颤振小部件中使用的V形图案的颜色ExpansionPanel()。这可以在packages/flatter/lib/src/material/expansion_panel.dart中找到

但是我发现这个V形符号的图标颜色比ExpandIcon()中的图标颜色低一级。这在packages/flatter/lib/src/material/expand_icon.dart中

将expand_icon.dart拉入我的应用程序并更新/覆盖硬编码颜色的正确方法是什么

颜色的定义如下:

  /// Default icon colors and opacities for when [Theme.brightness] is set to
  /// [Brightness.light] are based on the
  /// [Material Design system icon specifications](https://material.io/design/iconography/system-icons.html#color).
  /// Icon colors and opacities for [Brightness.dark] are based on the
  /// [Material Design dark theme specifications](https://material.io/design/color/dark-theme.html#ui-application)
  Color get _iconColor {
    if (widget.isExpanded && widget.expandedColor != null) {
      return widget.expandedColor;
    }

    if (widget.color != null) {
      return widget.color;
    }

    switch(Theme.of(context).brightness) {
      case Brightness.light:
        return Colors.black54;   // want to change this!!!
      case Brightness.dark:
        return Colors.white60;   // want to change this!!!

    }

    assert(false);
    return null;
  }

您可以使用
mixin
,它是一个“包含供其他类使用的方法,而不必是这些其他类的父类。”下面是一个示例实现,允许上面示例中的类
Color
使用一个新方法
getNewIconColor
,您可以在其中指定要使用的颜色

mixin MyNewColors {
  get newIconColor {
    //...

    switch (Theme.of(context).brightness) {
      case Brightness.light:
        return Colors.orange; // or the colors you want to change!!!
      case Brightness.dark:
        return Colors.blue; // or colors you want to change!!!

    }

    // ...
  }
}

class MyColor extends Color with MyNewColors {
  // ···
}

但我认为这并不能回答我提出的问题。我希望有一种优雅的方式来改变一个标准的小部件,而不必复制整套官方的颤振文件