Bagaimana cara mengkonversi string warna heksadesimal seperti #b74093
ke Color
dalam Flutter?
Di Flutter, Color
kelas hanya menerima integer sebagai parameter , atau ada kemungkinan untuk menggunakan konstruktor fromARGB
dan nama fromRGBO
.
Jadi kita hanya perlu mengkonversi string #b74093
ke nilai integer. Kita juga perlu menghormati bahwa opacity selalu perlu ditentukan.
255
opacity (penuh) diwakili oleh nilai heksadesimal FF
. Ini sudah meninggalkan kita 0xFF
. Sekarang, kita hanya perlu menambahkan string warna kita seperti ini:
const color = const Color(0xffb74093); // Second `const` is optional in assignments.
Huruf-huruf tersebut dapat dengan pilihan huruf besar atau kecil:
const color = const Color(0xFFB74093);
Dimulai dengan Dart 2.6.0
, Anda bisa membuatextension
untuk Color
kelas yang memungkinkan Anda menggunakan string warna heksadesimal untuk membuat Color
objek:
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')}';
}
The fromHex
Metode juga bisa dinyatakan dalam mixin
atau class
karena HexColor
nama perlu secara eksplisit ditentukan untuk menggunakannya, tetapi ekstensi berguna untuk toHex
metode, yang dapat digunakan secara implisit. Berikut ini sebuah contoh:
void main() {
final Color color = HexColor.fromHex('#aabbcc');
print(color.toHex());
print(const Color(0xffaabbcc).toHex());
}
Banyak jawaban lain di sini menunjukkan bagaimana Anda dapat membuat secara dinamis Color
dari string hex, seperti yang saya lakukan di atas. Namun, melakukan ini berarti bahwa warnanya tidak boleh a const
.
Idealnya, Anda akan menetapkan warna Anda seperti yang saya jelaskan di bagian pertama dari jawaban ini, yang lebih efisien ketika membuat banyak warna, yang biasanya berlaku untuk widget Flutter.
HexColor.fromHex
berfungsi tetapiColor.fromHex
tidak).0x
hanya menunjukkan bahwa digit berikut akan diuraikan sebagai hex heksadesimalThe
Color
kelas mengharapkan integer ARGB. Karena Anda mencoba menggunakannya denganRGB
nilai, gambarkan sebagai int dan awali dengan nilai0xff
.Jika Anda merasa terganggu dengan ini dan masih ingin menggunakan string, Anda dapat memperluas
Color
dan menambahkan konstruktor stringpemakaian
sumber
jika Anda ingin menggunakan kode heks warna yang ada dalam format ini # 123456 maka sangat mudah digunakan, buat variabel A dari tipe Warna dan tetapkan nilai berikut untuk itu.
gunakan myhexcolor dan Anda siap untuk pergi.
jika Anda ingin mengubah opacity warna langsung dari kode hex kemudian ubah nilai ff dalam 0xff ke nilai masing-masing dari tabel di bawah ini.
Nilai Hex Opacity
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
sumber
Untuk mengkonversi dari String heksadesimal ke int, lakukan:
Contoh panggilan:
sumber
Fungsi sederhana tanpa menggunakan kelas:
Anda bisa menggunakannya seperti ini:
sumber
Color(int.parse('#000000'.replaceAll('#', '0xff')))
Jalan mudah :
Pemakaian:
sumber
Ada solusi lain. Jika Anda menyimpan warna Anda sebagai string hex normal dan tidak ingin menambahkan opacity ke dalamnya (FF terkemuka): 1) Konversi string hex Anda ke int Untuk mengkonversi string hex ke integer, lakukan salah satu dari yang berikut:
atau
sebagai awalan 0x (atau -0x) akan membuat int.parse default ke radix 16.
2) Tambahkan opacity ke warna Anda melalui kode
sumber
ThemeData
.Di Flutter itu membuat warna dari RGB dengan alpha, gunakan
Cara menggunakan hex-color:
Hex-warna dengan opacity:
// atau ubah nilai "FF"
Untuk lebih lanjut, ikuti tautan resmi https://api.flutter.dev/flutter/dart-ui/Color-class.html
sumber
utils.dart
contoh penggunaan
sumber
Untuk referensi umum Ada cara sederhana menggunakan perpustakaan Supercharged . Meskipun, Anda dapat menggunakan metode ekstensi dengan semua solusi yang disebutkan, Anda menemukan toolkit pustaka pengguna praktis.
Lebih mudah, bukan?
Supercharged
sumber
"#b74093"
? BAIK...Untuk Resep HEX
sumber
Impor kelas baru dan gunakan seperti ini
HexToColor('#F2A03D')
sumber
Saya melewatkan jawaban yang jelas menggunakan nomor hex untuk konstruktor fromRGB:
sumber
Anda dapat mengklik Color Widget dan memberi tahu Anda informasi yang lebih dalam tentang bagaimana huruf-huruf itu berdiri. Anda juga dapat menggunakan metode Color.fromARGB () untuk membuat warna khusus yang jauh lebih mudah bagi saya. Gunakan situs Flutter Doctor Color Picker untuk memilih warna yang Anda inginkan untuk aplikasi flutter Anda.
sumber
Tidak tahu mengapa ini dijatuhkan, ini adalah solusi bagi saya.
Satu-satunya cara yang tidak memerlukan langkah-langkah tambahan
sumber
Anda dapat menggunakan paket ini dari_css_color untuk
Color
keluar dari string hex. Ini mendukung notasi RGB hex tiga dan enam digit.Demi optimasi, buat Contoh warna sekali untuk setiap warna dan simpan di suatu tempat untuk penggunaan nanti.
sumber