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

时间:2021-06-02 12:58:43

标签: string flutter colors widget

我有一组来自数据库的数据,就像这样

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

基于此(无法更改 DB ),如何在具有背景颜色的小部件中动态显示名称,例如 "red"

(取一个颜色字符串red转换为Color类型)

4 个答案:

答案 0 :(得分:2)

据我所知,这是不可能的。

但你可以这样做:

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

然后

{
   ...
    name:"any name"
  , something:{
        color: nameToColor['red'] ?? Color.green //or any other default color
     }
}

答案 1 :(得分:2)

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

<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<div id="div">
</div>

像这样使用

 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;
    }
  }

答案 2 :(得分:0)

你可以输入variable然后你就可以使用它了。

示例:

const Color Red=Colors.red;

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

答案 3 :(得分:0)

感谢@Tipu Sultan 和@Er1。

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

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

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

我尝试使用文本小部件

Text( objFormDB.name 
     ,style: TextStyle( color : nameToColor[ objFormDB.somethimg.color] )
   ) 

这很简单:)

相关问题