Flutter 类型';列表<;动态>';不是类型为';列表<;颜色>';

Flutter 类型';列表<;动态>';不是类型为';列表<;颜色>';,flutter,Flutter,我有一个工作箱装饰: BoxDecoration( gradient: RadialGradient( colors: [Colors.red, tileColorSwitch(store.baskets[index].color]), ); 但是当我把它放在一个常量中以便可以重复使用它时,以下_TypeError被抛出: 类型“List”不是类型“List”的子类型 kBoxDeco1(context, gradColors) { return BoxDecora

我有一个工作箱装饰:

BoxDecoration(
    gradient: RadialGradient(
      colors: [Colors.red, tileColorSwitch(store.baskets[index].color]),
  );
但是当我把它放在一个常量中以便可以重复使用它时,以下_TypeError被抛出: 类型“List”不是类型“List”的子类型

kBoxDeco1(context, gradColors) {
  return BoxDecoration(
    gradient: RadialGradient(
      colors: gradColors,
    ),
  );
}

Container(
   decoration: kBoxDeco1(
   context,[Colors.red, tileColorSwitch(store.baskets[index].color)],
),
这是我的tileColorSwitch方法:

tileColorSwitch(colorString) {
  switch (colorString) {
    case "grey":
      return Colors.grey;
      break;
    case "yellow":
      return Colors.yellowAccent;
      break;
    case "cyan":
      return Colors.cyanAccent;
      break;
  }
}

强制输入可能会有所帮助

kBoxDeco1(context,List<Color> gradColors) {
  return BoxDecoration(
    gradient: RadialGradient(
      colors: gradColors,
    ),
  );
}
kBoxDeco1(上下文、列表颜色){
返回框装饰(
梯度:径向梯度(
颜色:渐变颜色,
),
);
}

可能是因为您尚未将返回类型添加到tileColorSwitch方法中

Color TileColor开关(colorString){
开关(彩色字符串){
案例“灰色”:
返回颜色。灰色;
打破
案例“黄色”:
返回颜色。黄色调;
打破
案例“青色”:
返回颜色。青色重音;
打破
违约:
......
打破
}
}

还要注意添加了默认情况。如果没有它,该方法可能会抱怨,因为该方法不会始终返回颜色对象

谢谢您提供的有用信息。但是,在添加默认情况下,我仍然会得到相同的错误,除非我强制执行BabC所说的类型。您是否将返回类型添加为颜色“Color tileColorSwitch(colorString)”?哦,对不起,是的,它工作了,现在更有意义了:D非常感谢