Flutter / Dart: конвертировать строку цвета HEX в цвет? - PullRequest
0 голосов
/ 17 мая 2018

В нашей базе данных цвета сохранены как String, например, "#AABBCC", и поэтому я в основном ищу такую ​​функцию: Color.parseColor("#AABBCC"); для флаттера

Класс Color требует что-то вроде этого Color(0xFF42A5F5), поэтому мне нужно конвертировать "#AABBCC" в 0xFFAABBCC

Ответы [ 4 ]

0 голосов
/ 05 апреля 2019

Я использую эту функцию в своем проекте, которая обрабатывает преобразование шестнадцатеричной строки в цвет.

Color hexToColor(String hexString, {String alphaChannel = 'FF'}) {
  return Color(int.parse(hexString.replaceFirst('#', '0x$alphaChannel')));
}

Идея состоит в том, что теперь вы можете передать этой функции шестнадцатеричную строку, которая выглядит как «#ffffff», в дополнение к этому вы можете пропустить альфа-канал. Альфа-канал работает с непрозрачностью вашего цвета, и вы можете напрямую передать его в Color.

Об альфа-каналах часть FF представляет собой шестнадцатеричное представление 0-100, например:

0 = 00 1 = 03 2 = 05 ... 9 = 17 ... 10 = 1А 11 = 1С 12 = 1F ... 99 = ФК 100 = FF

Предположим, вы хотите преобразовать # 000000 в цвет и иметь непрозрачность 0,1. Вы можете просто вызвать эту функцию так:

hexToColor('#000000', alphaChannel: '1A');

И если вы просто назовете это так:

hexToColor('#000000');

Тогда он вернет вам только черный цвет с 1 непрозрачностью. Надеюсь, что это поможет всем, кто интересуется, как работать с непрозрачностью и обработкой цветов чуть дальше.

0 голосов
/ 17 мая 2018
/// Construct a color from a hex code string, of the format #RRGGBB.
Color hexToColor(String code) {
  return new Color(int.parse(code.substring(1, 7), radix: 16) + 0xFF000000);
}
0 голосов
/ 17 мая 2018

Я закончил так:

hexStringToHexInt(String hex) {
  hex = hex.replaceFirst('#', '');
  hex = hex.length == 6 ? 'ff' + hex : hex;
  int val = int.parse(hex, radix: 16);
  return val;
}
0 голосов
/ 17 мая 2018

Простая замена строки приведет к правильному синтаксису:

String html_colour = '#AAABBCC';
String fixed_colour = html_colour.replace(new RegExp(r'#'), '0xFF');

Это должно сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...