颤振-使用自定义十六进制颜色

时间:2018-11-15 23:26:47

标签: dart flutter

如何在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,但是它们需要一个整数值和一个色板。十六进制值是否需要从字符串转换为整数?我想寻找一些代码示例,如果可能的话,如何做到这一点:)

预先感谢

2 个答案:

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