String 颤振将颜色(字符串)转换为颜色

String 颤振将颜色(字符串)转换为颜色,string,flutter,colors,widget,String,Flutter,Colors,Widget,我有一组来自DB的数据,比如 { ... name:"any name" , something:{ color:"red" } } Map<String, dynamic> map = { "name": "any name", "something": {"color": "red&quo

我有一组来自DB的数据,比如

{
   ...
    name:"any name"
  , something:{
        color:"red"
     }
}
 Map<String, dynamic> map = {
    "name": "any name",
    "something": {"color": "red"}
  };

  Color getColor(String color) {
    switch (color) {
        //add more color as your wish
      case "red":
        return Colors.red;
      case "blue":
        return Colors.blue;
      case "yellow":
        return Colors.yellow;
      case "orange":
        return Colors.orange;
      case "green":
        return Colors.green;
      default:
        return Colors.transparent;
    }
  }
基于此(不能更改数据库),如何在具有背景色的小部件中动态显示名称,例如“红色”


(将颜色字符串红色转换为颜色类型)

据我所知,这是不可能的

但你可以这样做:

Map nameToColor={
“红色”:颜色。红色,
“蓝色”:颜色。蓝色,
}
然后

{
...
姓名:“任何姓名”
例如:{
颜色:nameToColor['red']??color.green//或任何其他默认颜色
}
}

据我所知,这是不可能的

但你可以这样做:

Map nameToColor={
“红色”:颜色。红色,
“蓝色”:颜色。蓝色,
}
然后

{
...
姓名:“任何姓名”
例如:{
颜色:nameToColor['red']??color.green//或任何其他默认颜色
}
}

您可以输入
变量
然后使用它

例如:

const Color Red=Colors.red;

{
   ...
    name:"any name"
  , something:{
        color:Red
     }
}

您可以输入
变量
,然后使用它

例如:

const Color Red=Colors.red;

{
   ...
    name:"any name"
  , something:{
        color:Red
     }
}

其实没有这个办法。但是如果颜色的价值是已知的,那么我们可以这样做

{
   ...
    name:"any name"
  , something:{
        color:"red"
     }
}
 Map<String, dynamic> map = {
    "name": "any name",
    "something": {"color": "red"}
  };

  Color getColor(String color) {
    switch (color) {
        //add more color as your wish
      case "red":
        return Colors.red;
      case "blue":
        return Colors.blue;
      case "yellow":
        return Colors.yellow;
      case "orange":
        return Colors.orange;
      case "green":
        return Colors.green;
      default:
        return Colors.transparent;
    }
  }

其实没有这个办法。但是如果颜色的价值是已知的,那么我们可以这样做

{
   ...
    name:"any name"
  , something:{
        color:"red"
     }
}
 Map<String, dynamic> map = {
    "name": "any name",
    "something": {"color": "red"}
  };

  Color getColor(String color) {
    switch (color) {
        //add more color as your wish
      case "red":
        return Colors.red;
      case "blue":
        return Colors.blue;
      case "yellow":
        return Colors.yellow;
      case "orange":
        return Colors.orange;
      case "green":
        return Colors.green;
      default:
        return Colors.transparent;
    }
  }

多亏了@Tipu Sultan和@Er1

我尝试了另一种解决方案,效果很好

Map<String, dynamic> objFormDB= {
    "name": "any name",
    "something": {"color": "red"}
  };

Map<String, Color> nameToColor = {
  'red'  : Colors.red,
  'blue' : Colors.blue,
}

这很简单:)

多亏了@Tipu Sultan和@Er1

我尝试了另一种解决方案,效果很好

Map<String, dynamic> objFormDB= {
    "name": "any name",
    "something": {"color": "red"}
  };

Map<String, Color> nameToColor = {
  'red'  : Colors.red,
  'blue' : Colors.blue,
}

这很简单:)

我无法更改来自DB的对象,你是说像。。。Text(obj.name,style:TextStyle(color:nameToColor[obj.something.color])???谢谢这一款很管用。。。Text(obj.name,style:TextStyle(color:nameToColor[obj.something.color])@Salsabeel你是对的,我没有注意到你的示例显示了来自数据库的数据。但你似乎已经明白了。快乐编码!我无法更改来自DB的对象,你是说像。。。Text(obj.name,style:TextStyle(color:nameToColor[obj.something.color])???谢谢这一款很管用。。。Text(obj.name,style:TextStyle(color:nameToColor[obj.something.color])@Salsabeel你是对的,我没有注意到你的示例显示了来自数据库的数据。但你似乎已经明白了。快乐编码!