您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在Flutter中使用十六进制颜色字符串?

如何在Flutter中使用十六进制颜色字符串?

Flutter中, 仅接受 作为参数,或者可以使用命名的构造函数fromARGBfromRGBO

因此,我们只需要将字符串转换#b74093整数值即可。另外,我们需要尊重始终需要指定 。255(完全)不透明度由十六进制值表示FF。这已经给我们留下了 。现在,我们只需要像这样添加颜色字符串即可:

const color = const Color(0xffb74093); // Second `const` is optional in assignments.

可以选择是否将字母大写:

const color = const Color(0xFFB74093);

从Dart开始2.6.0,您可以extensionColor类创建一个,让您使用十六进制颜色字符串创建一个Color对象:

extension HexColor on Color {
  /// String is in the format "aabbcc" or "ffaabbcc" with an optional leading "#".
  static Color fromHex(String hexString) {
    final buffer = StringBuffer();
    if (hexString.length == 6 || hexString.length == 7) buffer.write('ff');
    buffer.write(hexString.replaceFirst('#', ''));
    return Color(int.parse(buffer.toString(), radix: 16));
  }

  /// Prefixes a hash sign if [leadingHashSign] is set to `true` (default is `true`).
  String toHex({bool leadingHashSign = true}) => '${leadingHashSign ? '#' : ''}'
      '${alpha.toRadixString(16).padLeft(2, '0')}'
      '${red.toRadixString(16).padLeft(2, '0')}'
      '${green.toRadixString(16).padLeft(2, '0')}'
      '${blue.toRadixString(16).padLeft(2, '0')}';
}

fromHex也可以在mixin或中声明该方法class因为HexColor要使用该名称需要显式指定名称,但是该扩展名对该toHex方法很有用,可以隐式使用。这是一个例子:

void main() {
  final Color color = HexColor.fromHex('#aabbcc');

  print(color.toHex());
  print(const Color(0xffaabbcc).toHex());
}
其他 2022/1/1 18:16:17 有447人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶