如何在Flutter中从十六进制值添加颜色?例如,我正在尝试以下操作:
Widget build(BuildContext context) {
return Row(
children: <Widget>[
Expanded(
child: Container(
padding: EdgeInsets.only(left: 20.0),
height: 100.0,
decoration: BoxDecoration(
color: Color.hex("#183451"),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Image.asset('assets/main_image.png'),
// More widgets here
],
),
),
),
],
);
}
但是出现以下错误:
错误:无法将参数类型'color :: Color'分配给 参数类型'dart.ui :: Color
这是使用“颜色”包: https://pub.dartlang.org/packages/color
如果我使用MaterialColor
,它将按预期工作:
color: Colors.blue
我想我需要创建一个MaterialColor
,但是它们需要一个整数值和一个色板。十六进制值是否需要从字符串转换为整数?我想寻找一些代码示例,如果可能的话,如何做到这一点:)
预先感谢
答案 0 :(得分:2)
您实际上不需要外部包装即可使用自定义颜色。
只需像Color(0xFF183451)
这样使用它,其中FF
是透明的,其中00是透明的,而FF是不透明的。
答案 1 :(得分:-1)
Color parseColor(String color) {
String hex = color.replaceAll("#", "");
if (hex.isEmpty) hex = "ffffff";
if (hex.length == 3) {
hex =
'${hex.substring(0, 1)}${hex.substring(0, 1)}${hex.substring(1, 2)}${hex.substring(1, 2)}${hex.substring(2, 3)}${hex.substring(2, 3)}';
}
Color col = Color(int.parse(hex, radix: 16)).withOpacity(1.0);
return col;
}