Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何在flatter中使用十六进制颜色字符串?_Flutter_Dart_Colors_Hex - Fatal编程技术网

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

Flutter 如何在flatter中使用十六进制颜色字符串?,flutter,dart,colors,hex,Flutter,Dart,Colors,Hex,如何在flatter中将十六进制颜色字符串(如#b74093转换为颜色 我想在Dart中使用十六进制颜色代码。在颤振中,只接受整数作为参数,或者可以使用命名构造函数和 因此,我们只需要将字符串#b74093转换为整数值。我们还需要尊重,不透明度始终需要指定。 255(完整)不透明度由十六进制值FF表示。这已经给我们留下了0xFF。现在,我们只需要像这样附加颜色字符串: const color = const Color(0xffb74093); // Second `const` is opti

如何在flatter中将十六进制颜色字符串(如
#b74093
转换为
颜色

我想在Dart中使用十六进制颜色代码。

在颤振中,只接受整数作为参数,或者可以使用命名构造函数和

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

const color = const Color(0xffb74093); // Second `const` is optional in assignments.
HexToColor('#F2A03D')
Color color1 = _colorFromHex("b74093");
Color color2 = _colorFromHex("#b74093");
Text(
  'Hello, World!',
  style: TextStyle(backgroundColor: '#bfeb91'.toColor()), // Or 'bfeb91', or 'ffbfeb91'
),
字母可以选择是否大写:

const color = const Color(0xFFB74093);

对于允许您使用十六进制颜色字符串创建
Color
对象的
Color
类:

extension HexColor on Color{
///字符串的格式为“aabbcc”或“ffaabbcc”,并带有可选的前导“#”。
来自hex的静态颜色(字符串hextstring){
final buffer=StringBuffer();
if(hexString.length==6 | | hexString.length==7)buffer.write('ff');
write(hexString.replaceFirst('#','');
返回颜色(int.parse(buffer.toString(),基数:16));
}
///如果[leadingHashSign]设置为'true'(默认值为'true'),则为哈希符号添加前缀。
字符串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(){
最终颜色=HexColor.fromHex(“#aabbcc”);
打印(color.toHex());
打印(常量颜色(0xffaabbcc.toHex());
}
使用十六进制字符串的缺点 这里的许多其他答案显示了如何从十六进制字符串动态创建
颜色
,就像我上面所做的那样。但是,这样做意味着颜色不能是常量
理想情况下,您可以按照我在回答的第一部分中解释的方式分配颜色,这在大量实例化颜色时更有效,这通常适用于颤振小部件。

要将十六进制字符串转换为整数,请执行以下操作:

int hexToInt(String hex)
{
  int val = 0;
  int len = hex.length;
  for (int i = 0; i < len; i++) {
    int hexDigit = hex.codeUnitAt(i);
    if (hexDigit >= 48 && hexDigit <= 57) {
      val += (hexDigit - 48) * (1 << (4 * (len - 1 - i)));
    } else if (hexDigit >= 65 && hexDigit <= 70) {
      // A..F
      val += (hexDigit - 55) * (1 << (4 * (len - 1 - i)));
    } else if (hexDigit >= 97 && hexDigit <= 102) {
      // a..f
      val += (hexDigit - 87) * (1 << (4 * (len - 1 - i)));
    } else {
      throw new FormatException("Invalid hexadecimal value");
    }
  }
  return val;
}
“#b74093”
?好的

烹饪
int getColorHexFromStr(字符串colorStr)
{
colorStr=“FF”+colorStr;
colorStr=colorStr.replaceAll(“#”);
int-val=0;
int len=colorStr.length;
对于(int i=0;i如果(hexDigit>=48&&hexDigit还有另一种解决方案。如果您将颜色存储为普通十六进制字符串,并且不想为其添加不透明度(前导“FF”):

  • 将十六进制字符串转换为int 要将十六进制字符串转换为整数,请执行以下操作之一:

     var myInt = int.parse(hexString, radix: 16);
    

    因为前缀0x(或-0x)将使int.parse默认为基数16

  • 通过代码为颜色添加不透明度

     Color color = new Color(myInt).withOpacity(1.0);
    

  • Color
    类需要一个ARGB整数。由于您试图将其与RGB值一起使用,请将其表示为int,并在其前面加上
    0xff

    Color mainColor = Color(0xffb74093);
    

    如果您对此感到恼火,并且仍然希望使用字符串,那么可以扩展
    Color
    并添加字符串构造函数

    class HexColor extends Color {
      static int _getColorFromHex(String hexColor) {
        hexColor = hexColor.toUpperCase().replaceAll("#", "");
        if (hexColor.length == 6) {
          hexColor = "FF" + hexColor;
        }
        return int.parse(hexColor, radix: 16);
      }
    
      HexColor(final String hexColor) : super(_getColorFromHex(hexColor));
    }
    
    用法

    导入新类并按如下方式使用:

    const color = const Color(0xffb74093); // Second `const` is optional in assignments.
    
    HexToColor('#F2A03D')
    
    Color color1 = _colorFromHex("b74093");
    Color color2 = _colorFromHex("#b74093");
    
    Text(
      'Hello, World!',
      style: TextStyle(backgroundColor: '#bfeb91'.toColor()), // Or 'bfeb91', or 'ffbfeb91'
    ),
    

    你们可以点击颜色小部件,它会告诉你们更深入的信息,这些字母代表什么


    您还可以使用Color.fromARGB()方法创建自定义颜色,这对我来说要简单得多。使用网站为您的颤振应用程序选择您想要的任何颜色。

    在颤振中,要使用alpha从RGB创建颜色,请使用:

    return new Container(
      color: new Color.fromRGBO(0, 0, 0, 0.5),
    );
    
    如何使用十六进制颜色:

    return new Container(
      color: new Color(0xFF4286f4),
    );
    // 0xFF -> the opacity (FF for opaque)
    // 4286f4 -> the hexadecimal color
    
    不透明度的十六进制颜色:

    return new Container(
      color: new Color(0xFF4286f4).withOpacity(0.5),
    );
    
    //或更改“FF”值

    100%FF
    95%-F2
    90%-E6
    85%-D9
    80%-CC
    75%高炉
    70%-B3
    65%-A6
    60% — 99
    55%-8摄氏度
    50% — 80
    45% — 73
    40% — 66
    35% — 59
    30%-4D
    25% — 40
    20% — 33
    15% — 26
    10%-1A
    5%-0D
    0% — 00
    

    有关更多信息,请参阅官方文档页面。

    不使用类的简单函数:

    Color _colorFromHex(String hexColor) {
      final hexCode = hexColor.replaceAll('#', '');
      return Color(int.parse('FF$hexCode', radix: 16));
    }
    
    您可以这样使用它:

    const color = const Color(0xffb74093); // Second `const` is optional in assignments.
    
    HexToColor('#F2A03D')
    
    Color color1 = _colorFromHex("b74093");
    Color color2 = _colorFromHex("#b74093");
    
    Text(
      'Hello, World!',
      style: TextStyle(backgroundColor: '#bfeb91'.toColor()), // Or 'bfeb91', or 'ffbfeb91'
    ),
    
    文件utils.dart 示例用法 简易方法:

    String color = yourHexColor.replaceAll('#', '0xff');
    
    用法:

    Container(
        color: Color(int.parse(color)),
    )
    

    将十六进制数与fromRGB构造函数一起使用:

    Color.fromRGBO(0xb7, 0x40, 0x93, 1),
    

    如果要使用格式为#123456的颜色的十六进制代码,则很容易做到。创建一个类型为color的变量,并为其指定以下值

    Color myHexColor = Color(0xff123456)
    
    // Here you notice I use the 0xff and that is the opacity or transparency
    // of the color and you can also change these values.
    
    使用myhexcolor,您就可以开始了

    如果要直接从十六进制代码更改颜色的不透明度,请将0xff中的ff值更改为下表中的相应值

    十六进制不透明度值
    100%FF
    95%-F2
    90%-E6
    85%-D9
    80%-CC
    75%高炉
    70%-B3
    65%-A6
    60% — 99
    55%-8摄氏度
    50% — 80
    45% — 73
    40% — 66
    35% — 59
    30%-4D
    25% — 40
    20% — 33
    15% — 26
    10%-1A
    5%-0D
    0% — 00
    
    供一般参考。有一种更简单的方法使用“超级增压”库。尽管您可以将扩展方法用于上述所有解决方案,但您可以找到实用的用户库工具包

    "#ff00ff".toColor(); // Painless hex to color
    "red".toColor(); // Supports all web color names
    
    更容易,对吧


    这是我的解决方案:

    String hexString = "45a3df";
    Color(int.parse("0xff${hexString}"));
    
    这是唯一不需要额外步骤的方法。

    您可以使用该软件包从十六进制字符串中获取
    Color
    。它支持三位和六位RGB十六进制表示法

    Color=fromCSSColor('#ff00aa'))
    
    乐观主义者
    
    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;
    }
    
    Container(
        color: parseColor("#b74093")
    )
    
    Color getColorFromColorCode(String code){
      return Color(int.parse(code.substring(1, 7), radix: 16) + 0xFF000000);
    }
    
    Color _getColorFromHex(String hexColor) {
      hexColor = hexColor.replaceAll("#", "");
      if (hexColor.length == 6) {
        hexColor = "FF" + hexColor;
      }
      if (hexColor.length == 8) {
        return Color(int.parse("0x$hexColor"));
      }
    }
    
    Text(
      'Hello, World!',
      style: TextStyle(backgroundColor: _getColorFromHex('ff00aa')), // Or 'bfeb91', or 'ffbfeb91'
    ),
    
    extension ColorExtension on String {
      toColor() {
        var hexColor = this.replaceAll("#", "");
        if (hexColor.length == 6) {
          hexColor = "FF" + hexColor;
        }
        if (hexColor.length == 8) {
          return Color(int.parse("0x$hexColor"));
        }
      }
    }
    
    Text(
      'Hello, World!',
      style: TextStyle(backgroundColor: '#bfeb91'.toColor()), // Or 'bfeb91', or 'ffbfeb91'
    ),
    
       Color colorFromHex(String hexColor) {
       final hexCode = hexColor.replaceAll('#', '');
       if (hexColor.length == 6) {
        hexColor = 'FF' + hexColor; // FF as the opacity value if you don't add it.
       }
      return Color(int.parse('FF$hexCode', radix: 16));
    }
    
     Container(
              color: colorFromHex('abcdff'),
              child: Text(
                'Never stop learning',
                style: TextStyle(color: colorFromHex('bbffffcc')),
              ),
            )
    
    import 'package:supercharged/supercharged.dart';
    
    "#ff00ff".toColor(); // Painless hex to color
    "red".toColor(); // Supports all web color names
    
    Container
    (
        color:Color(0xff000000)
    )
    
    colorToHexString(Color color) {
      return '#FF${color.value.toRadixString(16).substring(2, 8)}';
    }
    
    hexStringToColor(String hexColor) {
      hexColor = hexColor.toUpperCase().replaceAll("#", "");
      if (hexColor.length == 6) {
        hexColor = "FF" + hexColor;
      }
      return Color(int.parse(hexColor, radix: 16));
    }
    
    String hexCode = colorToHexString(Colors.green);
    Color bgColor = hexStringToColor(hexCode);
    print("$hexCode = $bgColor");