আমি কিভাবে কনভার্ট করব হেক্সাডেসিমেল রঙ পংক্তি মত #b74093
একটি থেকে Color
পাখির মধ্যে?
আমি কিভাবে কনভার্ট করব হেক্সাডেসিমেল রঙ পংক্তি মত #b74093
একটি থেকে Color
পাখির মধ্যে?
উত্তর:
ঝাঁকুনিতে Color
শ্রেণিটি কেবলমাত্র পরামিতি হিসাবে পূর্ণসংখ্যাকে গ্রহণ করে , বা নামকরণকারী কনস্ট্রাক্টর এবং ব্যবহার করার সম্ভাবনা রয়েছেfromARGB
fromRGBO
।
সুতরাং আমাদের কেবল স্ট্রিংকে #b74093
একটি পূর্ণসংখ্যার মানতে রূপান্তর করতে হবে । এছাড়াও আমাদের শ্রদ্ধা করতে হবে যে অস্বচ্ছতা সর্বদা নির্দিষ্ট করা দরকার।
255
(পূর্ণ) অস্বচ্ছতা হেক্সাডেসিমাল মান দ্বারা প্রতিনিধিত্ব করা হয় FF
। এটি ইতিমধ্যে আমাদের সাথে ছেড়ে যায় 0xFF
। এখন, আমাদের কেবল আমাদের রঙের স্ট্রিংটি যুক্ত করতে হবে:
const color = const Color(0xffb74093); // Second `const` is optional in assignments.
বর্ণগুলি পছন্দ অনুসারে মূলধন করা যায় বা না:
const color = const Color(0xFFB74093);
ডার্ট দিয়ে শুরু করে 2.6.0
, আপনিextension
Color
ক্লাসের জন্য একটি তৈরি করতে পারেন যা আপনাকে একটি 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());
}
এখানে অন্যান্য উত্তরগুলির মধ্যে অনেকগুলি দেখায় যে আপনি কীভাবে গতিশীলভাবে Color
হেক্স স্ট্রিং থেকে একটি তৈরি করতে পারবেন , যেমন আমি উপরে করেছি। তবে এটি করার অর্থ এই যে রঙটি একটি হতে পারে না const
।
আদর্শভাবে, আপনি এই বর্ণনার উত্তরটির প্রথম অংশে যেভাবে ব্যাখ্যা করেছেন সেভাবে আপনি আপনার রঙগুলি বরাদ্দ করবেন, যা অনেকগুলি রং ইনস্ট্যান্ট করার সময় আরও কার্যকর, যা সাধারণত ফ্লার্ট উইজেটগুলির ক্ষেত্রে হয়।
HexColor.fromHex
কাজ Color.fromHex
করে না তবে)।
0x
কেবল ইঙ্গিত করে যে নিম্নলিখিত সংখ্যাগুলি হেক্সাডেসিমেল p হিসাবে পার্স করা হবে
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
আপনি যদি রঙের হেক্স কোড ব্যবহার করতে চান যা এই ফর্ম্যাট # 123456 এ রয়েছে তবে এটি খুব সহজেই ব্যবহার করা যায়, রঙের একটি ভেরিয়েবল তৈরি করুন এবং এটিতে নিম্নলিখিত মানগুলি নির্ধারণ করুন।
Color myHexColor = Color(0xff123456)
// her you notice I use the 0xff and that is opacity or transparency of the color
// and you can also change these value .
myhexcolor ব্যবহার করুন এবং আপনি যেতে প্রস্তুত।
আপনি যদি হেক্স কোড থেকে রঙের বর্ণের অস্বচ্ছতা পরিবর্তন করতে চান তবে নীচের টেবিল থেকে 0xff এ ff মানটি যথাক্রমে মানে পরিবর্তন করুন।
হেক্স অস্বচ্ছতার মান
100% - এফএফ
95% - এফ 2
90% - E6
85% - ডি 9
80% - সিসি
75% - বিএফ
70% - বি 3
65% - এ 6
60% - 99
55% - 8 সি
50% - 80
45% - 73
40% - 66
35% - 59
30% - 4 ডি
25% - 40
20% - 33
15% - 26
10% - 1 এ
5% - 0 ডি
0% - 00
হেক্সাডেসিমাল স্ট্রিং থেকে ইনটে রূপান্তর করতে, করুন:
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"));
ক্লাস ব্যবহার না করে একটি সাধারণ ফাংশন:
Color _colorFromHex(String hexColor) {
final hexCode = hexColor.replaceAll('#', '');
return Color(int.parse('FF$hexCode', radix: 16));
}
আপনি এটি এর মতো ব্যবহার করতে পারেন:
Color color1 = _colorFromHex("b74093");
Color color2 = _colorFromHex("#b74093");
Color(int.parse('#000000'.replaceAll('#', '0xff')))
সহজ পথ :
String color = yourHexColor.replaceAll('#', '0xff');
ব্যবহার:
Container(
color: Color(int.parse(color)),
)
আরও একটি সমাধান আছে। আপনি যদি নিজের রঙকে সাধারণ হেক্স স্ট্রিং হিসাবে সঞ্চয় করেন এবং এতে অস্বচ্ছতা যুক্ত করতে চান না (1 টি এফএফ): 1) আপনার হেক্স স্ট্রিংটিকে পূর্ণসংখ্যায় রূপান্তর করতে একটি হেক্স-স্ট্রিংকে একটি পূর্ণসংখ্যায় রূপান্তর করতে নিম্নলিখিতগুলির মধ্যে একটি করুন:
var myInt = int.parse(hexString, radix: 16);
অথবা
var myInt = int.parse("0x$hexString");
0x এর উপসর্গ হিসাবে (বা -0x) 16 এর মূলতকে int.parse ডিফল্ট করবে।
2) কোডের মাধ্যমে আপনার রঙে অস্বচ্ছতা যুক্ত করুন
Color color = new Color(myInt).withOpacity(1.0);
ThemeData
।
বিড়বিড় করে এটি আরজিবি থেকে আলফা সহ একটি রঙ তৈরি করে, ব্যবহার করুন
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 hex-color
অস্বচ্ছতার সাথে হেক্স-রঙ:
return new Container(
color: new Color(0xFF4286f4).withOpacity(0.5),
);
// বা "এফএফ" মান পরিবর্তন করুন
100% — FF
95% — F2
90% — E6
85% — D9
80% — CC
75% — BF
70% — B3
65% — A6
60% — 99
55% — 8C
50% — 80
45% — 73
40% — 66
35% — 59
30% — 4D
25% — 40
20% — 33
15% — 26
10% — 1A
5% — 0D
0% — 00
আরও জানার জন্য অফিশিয়াল লিঙ্ক https://api.flutter.dev/flutter/dart-ui/Color-class.html অনুসরণ করুন
///
/// Convert a color hex-string to a Color object.
///
Color getColorFromHex(String hexColor) {
hexColor = hexColor.toUpperCase().replaceAll('#', '');
if (hexColor.length == 6) {
hexColor = 'FF' + hexColor;
}
return Color(int.parse(hexColor, radix: 16));
}
Text(
'hello world',
style: TextStyle(
color: getColorFromHex('#aabbcc'),
fontWeight: FontWeight.bold,
)
)
সাধারণ রেফারেন্সের জন্য। সুপারচার্জযুক্ত লাইব্রেরিটি ব্যবহার করার একটি সহজ উপায় রয়েছে । যদিও, আপনি উল্লিখিত সমস্ত সমাধান সহ এক্সটেনশন পদ্ধতিগুলি ব্যবহার করতে পারেন, আপনি ব্যবহারিক ব্যবহারকারী লাইব্রেরি সরঞ্জামকিট খুঁজে পাবেন।
"#ff00ff".toColor(); // painless hex to color
"red".toColor(); // supports all web color names
সহজ, তাই না?
"#b74093"
? ঠিক আছে...
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;
}
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));
}
নতুন ক্লাসটি আমদানি করুন এবং এটি ব্যবহার করুন HexToColor('#F2A03D')
আপনি রঙিন উইজেটে ক্লিক করতে পারেন এবং এটি আপনাকে আরও গভীর তথ্যতে জানায় যে সেই অক্ষরগুলি কীভাবে দাঁড়ায়। আপনি কাস্টম রঙ তৈরি করতে কালার.ফর্মআরজিবি () পদ্ধতিটিও ব্যবহার করতে পারেন যা আমার কাছে সহজ easier ব্যবহারের পাখির ডক্টর রঙ বাছাইকারি ওয়েবসাইট কোন রঙ আপনার ঝাপটানি অ্যাপ্লিকেশনের জন্য আপনি চান বাছাই।
String hexString = "45a3df";
Color(int.parse("0xff${hexString}"));
কেন এটিকে অবনমিত করা হচ্ছে তা জানেন না, এটি আমার জন্য সমাধান ছিল।
অতিরিক্ত পদক্ষেপের প্রয়োজন নেই এমন একমাত্র উপায়
হেক্স স্ট্রিং থেকে বেরিয়ে আসার জন্য আপনি এই প্যাকেজটি_ css_color ব্যবহার করতে পারেন Color
। এটি তিন এবং ছয় সংখ্যার আরজিবি হেক্স স্বরলিপি উভয় সমর্থন করে।
Color color = fromCSSColor('#ff00aa')
অপ্টিমাইজেশনের জন্য প্রতিটি রঙের জন্য একবার রঙ উদাহরণ তৈরি করুন এবং পরে ব্যবহারের জন্য এটি কোথাও সঞ্চয় করুন।