我想更改我的應用程式中的主要顏色,所以我嘗試了:
theme: ThemeData(
primaryColor: const Color(0xFF784CEF),
),
但這不起作用所以我檢查了檔案我發現了另一種使用方法
colorScheme: ColorScheme.fromSwatch(
primarySwatch: Colors.red,
// but I want 0xFF784CEF as my primary color so I tried
// primarySwatch: Color(0xFF784CEF),
// which gives me an error saying `The argument type 'Color' can't be assigned to the parameter type 'MaterialColor'.`
),
所以我的問題是:如何用十六進制顏色更改原色
uj5u.com熱心網友回復:
在 MaterialApp theme
theme: Theme.of(context).copyWith(
colorScheme: Theme.of(context).colorScheme.copyWith(
primary: const Color(0xFF784CEF),
),
),
uj5u.com熱心網友回復:
感謝“https://stackoverflow.com/questions/50081213/how-do-i-use-hexadecimal-color-strings-in-flutter/50081214#50081214”
在 Flutter 中,Color該類只接受整數作為引數,或者可以使用命名建構式fromARGB和fromRGBO。
所以我們只需要將字串轉換為#b74093整數值。此外,我們需要尊重始終需要指定的不透明度。
255(完全)不透明度由十六進制值表示FF。這已經給我們留下了0xFF. N
塊參考
哦,我們只需要像這樣附加我們的顏色字串:
const color = const Color(0xffb74093); // Second `const` is optional in assignments.
字母可以選擇大寫或不大寫:
const color = const Color(0xFFB74093);
如果您想使用百分比不透明度值,您可以FF使用此表中的值替換第一個值(也適用于其他顏色通道)。
擴展類
從 Dart 開始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方法也可以在 a mixinor 中宣告,class因為HexColor需要顯式指定名稱才能使用它,但擴展對toHex方法很有用,可以隱式使用。下面是一個例子:
void main() {
final Color color = HexColor.fromHex('#aabbcc');
print(color.toHex());
print(const Color(0xffaabbcc).toHex());
}
使用十六進制字串的缺點
此處的許多其他答案顯示了如何Color從十六進制字串動態創建 a ,就像我上面所做的那樣。但是,這樣做意味著顏色不能是const.
理想情況下,您可以按照我在本答案第一部分中解釋的方式分配顏色,這在大量實體化顏色時效率更高,這通常是 Flutter 小部件的情況。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/400736.html
標籤:扑
