colors मैं फ़्लटर में हेक्साडेसिमल रंग के तारों का उपयोग कैसे करूं?




dart flutter (8)

मैं हेक्साडेसिमल रंग स्ट्रिंग को #b74093 जैसे किसी Color में कैसे परिवर्तित #b74093 ?


अगर आपका रंग # e41749 है तो इसे 0xff से पहले जोड़ें

तो आप इसे इस प्रकार लिख सकते हैं:

रंग: रंग (0xffe41749);


आप कलर विजेट पर क्लिक कर सकते हैं और यह आपको बहुत गहरी जानकारी में बताता है कि वे अक्षर किस तरह से खड़े हैं। आप कस्टम रंग बनाने के लिए Color.fromARGB () विधि का भी उपयोग कर सकते हैं जो मेरे लिए बहुत आसान है। अपने फ़्लटर एप्लिकेशन के लिए किसी भी रंग को चुनने के लिए फ़्लटर डॉक्टर कलर पिकर वेबसाइट का उपयोग करें।


फ़्लटर में Color वर्ग केवल पूर्णांकों को पैरामीटर के रूप में स्वीकार करता है, या नामांकित कंस्ट्रक्टरों को fromARGB और fromRGBO से उपयोग करने की संभावना है।

इसलिए हमें केवल स्ट्रिंग #b74093 को पूर्णांक मान में #b74093 होगा। इसके अलावा, हमें इस बात का सम्मान करना होगा कि अपारदर्शिता को हमेशा निर्दिष्ट करने की आवश्यकता है
255 (पूर्ण) अपारदर्शिता का प्रतिनिधित्व हेक्साडेसिमल मान FF द्वारा किया जाता है। यह पहले से ही हमें 0xFF साथ छोड़ देता है। अब, हमें बस इस तरह से अपने रंग स्ट्रिंग को जोड़ने की आवश्यकता है:

final color = const Color(0xffb74093);

पसंद द्वारा अक्षरों को कैपिटल किया जा सकता है या नहीं:

final color = const Color(0xFFB74093);

हेक्साडेसिमल स्ट्रिंग से इंट में बदलने के लिए, करें:

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

कॉल उदाहरण:

Color color=new Color(hexToInt("FFB74093"));

const appBackground = रंग (0xffdf7599);

df7599 आपके रंग का हेक्स कोड है


"#b74093" ? ठीक...

हेक्स पकाने की विधि के लिए

import 'package:flutter/material.dart';
class HexToColor extends Color{
  static _hexToColor(String code) {
    return int.parse(code.substring(1, 7), radix: 16) + 0xFF000000;
  }
  HexToColor(final String code) : super(_hexToColor(code));
}

Color वर्ग ARGB पूर्णांक की अपेक्षा करता है। चूंकि आप इसे RGB मान के साथ उपयोग करने का प्रयास करते हैं, इसलिए इसे इंट का प्रतिनिधित्व करते हैं और इसे 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));
}

प्रयोग

Color color1 = HexColor("b74093");
Color color2 = HexColor("#b74093");
Color color3 = HexColor("#88b74093"); // if you wish to use ARGB format

int getColorHexFromStr(String colorStr)
{
  colorStr = "FF" + colorStr;
  colorStr = colorStr.replaceAll("#", "");
  int val = 0;
  int len = colorStr.length;
  for (int i = 0; i < len; i++) {
    int hexDigit = colorStr.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("An error occurred when converting a color");
    }
  }
  return val;
}

नए वर्ग को आयात करें और इसे HexToColor('#F2A03D') तरह उपयोग करें





flutter