متاسفانه کلاس color فلاتر کد رنگ hex رو که به صورت یک رشته هست رو قبول نمیکنه و در عوض یک عدد صحیح (0xFFBFEB91) رو قبول میکنه . توی این مقاله با هم یاد میگیریم که چطور یک کد رنگ hex رو که عموما در css کاربرد داره رو توی فلاتر مورد استفاده قرار بدیم.

 

با استفاده از یک تابع ساده 

 تابع زیر کد رنگ Hex رو میگیره و برای شما رنگ رو بر میگردونه !

 

Color _getColorFromHex(String hexColor) {
  hexColor = hexColor.replaceAll("#", "");
  if (hexColor.length == 6) {
    hexColor = "FF" + hexColor;
  }
  if (hexColor.length == 8) {
    return Color(int.parse("0x$hexColor"));
  }
}

 

این تابع یک رشته 6 (بدون کانال آلفا) یا 8 (با کانال آلفا) کاراکتری را دریافت میکند ، با یا بدون پیشوند #.

 FF به چه معناست؟

0xFF علامت هگزادسیمال عدد صحیح 255 است که با کدورت 100٪ است که در واقع همان # در دارت است .

 

به عنوان پسوند String 

با استفاده از قدرت دارت میتوانیم آن را به صورت یک تابع که در انتهای یک رشته قرار میگیرد تبدیل کنیم که رنگ را بر میگرداند.

 

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"));
    }
  }
}


پن: برای دونستن این که چطور یک رشته رو به عدد تبدیل کنیم میتونید این مقاله(int.parse) رو هم مطالعه کنید .


شما برای ارسال نظر باید وارد سایت شوید

دیدگاه های ارزشمند شما