我想改变我的应用程序中的原色,所以我尝试:
theme: ThemeData(
primaryColor: const Color(0xFF784CEF),
),
但这不起作用,所以我检查了文档,找到了另一种方法,即使用
dart prettyprint-override">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'.`
),
所以我的问题是:如何用十六进制颜色改变原色
多亏了“https://stackoverflow.com/questions/50081213/how-do-i-use-hexadecimal-color-strings-in-flutter/50081214#50081214"
在flatter中,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
(也适用于其他颜色通道)。
从Dart2.6.0
开始,您可以为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
。理想情况下,您可以按照我在答案第一部分中解释的方式分配颜色,这在大量实例化颜色时更有效,这通常是Flutter小部件的情况。
关于MaterialApp
主题
theme: Theme.of(context).copyWith(
colorScheme: Theme.of(context).colorScheme.copyWith(
primary: const Color(0xFF784CEF),
),
),
问题内容: 我正在尝试在Swift中使用十六进制颜色值,而不是允许您使用的几个标准颜色值,但是我不知道该怎么做。 示例:如何将其用作颜色? 问题答案: 实际上是用十六进制表示的3种颜色分量- 红色,绿色和蓝色。您可以使用前缀在Swift中编写十六进制表示法,例如 为了简化转换,让我们创建一个采用整数(0-255)值的初始化程序: 用法: 如何获得阿尔法? 根据您的用例,您可以简单地使用本机方法,例
问题内容: 假设我有一个十六进制,例如:5fc9f8 是否存在接受“黑暗程度”(-10到10)并返回反映该水平的十六进制的函数? 黑暗是指添加黑色/从颜色中删除黑色。 问题答案: import UIKit 游乐场测试
我用JSON格式存储了很多颜色。我使用rootbeer via gulp将它们转换为sass映射,可以由SCSS处理: 至 我可以很好地使用语法中的颜色,但一旦应用了任何颜色函数,如,编译器就会失败,因为颜色类型完全消失了。 即使使用也不允许sass将其视为字符串,但它需要是一种颜色。 我的问题是,是否有任何方法可以让我强制编译器将此作为一种颜色来处理呢?另一种方法是省略所有内置颜色函数的使用。
如何在Flutter中将这样的十六进制颜色字符串转换为? 我想在Dart中使用一个十六进制颜色代码。
问题内容: 对于Django应用,每个“成员”都分配有一种颜色以帮助识别它们。它们的颜色存储在数据库中,然后在需要时打印/复制到HTML中。唯一的问题是我不确定如何Hex在python / django中生成随机颜色。生成RGB颜色很容易,但是要存储它们,我要么需要a)在“成员”模型中增加三列,要么b)将它们全部存储在同一列中并使用逗号分隔它们,然后,解析HTML的颜色。这些都不是很吸引人,因此,
本文向大家介绍Flutter十六进制颜色转换成颜色对象,包括了Flutter十六进制颜色转换成颜色对象的使用技巧和注意事项,需要的朋友参考一下 十六进制颜色值格式一般如:#ff0000,以#开头,后面跟着6个十六进制字符。 而flutter中不能直接使用此类形式的颜色值,所以必须要转换为flutter颜色对象。 参考地址: https://stackoverflow.com/questions/5