颤动将颜色(字符串)转换为颜色
flutter convert color (string) to Color
我有一组来自数据库的数据,类似这样
{
...
name:"any name"
, something:{
color:"red"
}
}
基于此(无法更改 DB ),如何在具有背景颜色的小部件中动态显示名称,例如 "red"
(取一个颜色字符串red转换为Color类型)
据我所知这是不可能的。
但你可以这样做:
Map<String, Color> nameToColor = {
'red' : Colors.red,
'blue' : Colors.blue,
}
然后
{
...
name:"any name"
, something:{
color: nameToColor['red'] ?? Color.green //or any other default color
}
}
可以放入variable
然后就可以使用了
示例:
const Color Red=Colors.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;
}
}
像这样使用
Container(color: getColor(map['color']),);
非常感谢@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] )
)
很简单:)
我有一组来自数据库的数据,类似这样
{
...
name:"any name"
, something:{
color:"red"
}
}
基于此(无法更改 DB ),如何在具有背景颜色的小部件中动态显示名称,例如 "red"
(取一个颜色字符串red转换为Color类型)
据我所知这是不可能的。
但你可以这样做:
Map<String, Color> nameToColor = {
'red' : Colors.red,
'blue' : Colors.blue,
}
然后
{
...
name:"any name"
, something:{
color: nameToColor['red'] ?? Color.green //or any other default color
}
}
可以放入variable
然后就可以使用了
示例:
const Color Red=Colors.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;
}
}
像这样使用
Container(color: getColor(map['color']),);
非常感谢@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] )
)
很简单:)