Flutter 当标准颤振小部件具有硬编码主题(如图标的颜色)时,扩展它的正确方法是什么?
我想更改标准颤振小部件中使用的V形图案的颜色ExpansionPanel()。这可以在packages/flatter/lib/src/material/expansion_panel.dart中找到 但是我发现这个V形符号的图标颜色比ExpandIcon()中的图标颜色低一级。这在packages/flatter/lib/src/material/expand_icon.dart中 将expand_icon.dart拉入我的应用程序并更新/覆盖硬编码颜色的正确方法是什么 颜色的定义如下: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拉入我的应用程序并更新/覆盖硬编码颜色的正确方法是什么 颜色的定义如下:
/// 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 {
// ···
}
但我认为这并不能回答我提出的问题。我希望有一种优雅的方式来改变一个标准的小部件,而不必复制整套官方的颤振文件