Flutter颜色管理插件uni_color_model的使用
Flutter颜色管理插件uni_color_model的使用

统一的颜色结构用于表示任何颜色:模型(CMYK、RGB、HSL等)、带有或不带有alpha通道,每个通道的深度,逐通道视图(十六进制、十进制、整数、双精度、百分比字符串)等。可以转换这些结构。
这是一个易于使用且经过良好测试的包。欢迎在您的项目中使用它。
当您需要通过名称确定颜色值或反之亦然,请参阅包 UniColorName。
如果您正在寻找一个有组织的颜色调色板,请查看 UniColorPalette。
分享一些爱并给仓库点个赞以支持该项目。

平台 | Android | iOS | Linux | MacOS | Windows |
---|---|---|---|---|---|
支持 | ✅ | ✅ | ✅ | ✅ | ✅ |
SDK | Dart | Flutter |
---|---|---|
支持 | ✅ | ✅ |
使用
final c = 0x1805db.rgbInt8Color;
print(c.int24Hex);
print(c.hasAlpha);
print('Red channel: #${c.r.hex()}');
输出:
1805db
false
Red channel: #18
有关详细示例,请参见 UniColorPalette 中的 example/all_palettes
文件夹,其中包含可视化调色板的 Flutter 示例。
颜色调色板
请参阅包 uni_color_palette。
术语表
色深或位深
位图图像每像素的位数。常见深度列表。
颜色转换器
颜色转换的公式很容易编程,但我们有很多转换器。所以让我们总结一下它们(待办事项):
alpha | model | type | depth | structure | tone |
---|---|---|---|---|---|
false | cmyk | double | 4 | double | int bits |
true | rgb | int | 8 | int | int dec |
hsl | 10 | List | int hex | ||
hsv | 16 | String | num bits | ||
xyz | UniColor | percent double | |||
percent int |
- alpha == 透明度(通道 0)
- model == 通道(1…4)
- type == 通道类型
- depth == 每个通道的深度,仅对类型为
int
的有效 - structure == 如何保存颜色
- tone == 如何表示结构
- int bits == 当
int dec
和int hex
相同时使用 - num bits ==
double
和int
的泛化
- int bits == 当
构造函数 UniColor
argbInt8Color
,rgbInt8Color
, …acmykInt8Color
,acmykInt8Color
, …- …
结构 int bits
0x0a1b2c
0xff0a1b2c
带有 alpha0xabc == 0xaabbcc
0xa == 0xaaaaaa
结构 String<int hex>
大小写不敏感。
允许通道之间有空格。
'#0a1b2c' == '0a1b2c' == '0a 1b 2c'
'#ff0a1b2c' == 'ff0a1b2c' == 'ff 0a 1b 2c'
'#abc' == 'a b c' == 'aabbcc'
'#a' == 'aaaaaa'
结构 String<int dec>
包含在待办事项中。
'12 134 205'
'255 12 134 205'
'120' == '120 120 120'
结构 String<percent double>
包含在待办事项中。
'0.12 0.134 0.205'
'1.0 0.12 0.134 0.205'
'0.120' == '0.12 0.12 0.12'
结构 percent<int>
包含在待办事项中。
'12% 13% 95%'
'100% 12% 13% 95%'
'20%' == '20% 20% 20%'
转换器名称使用以下模式:
[model][type][depth]To[model][type][depth][structure][tone]
。
示例用法
// 作为 ARGB 模型
0xff0a1b2c.argbInt8ToArgbInt8StringIntHex();
输出:
ff0a1b2c
// 作为 ARGB 模型,自动添加 alpha
0x0a1b2c.rgbInt8ToArgbInt8StringIntHex();
输出:
ff0a1b2c
// 作为 RGB UniColor,每个通道 16 位
0x0a1b2c.rgbInt8ToRgbInt16Color();
输出:
// 类型: RgbInt16Color
0a1b2c
// 作为 RGB int,每个通道 16 位
0x0a1b2c.rgbInt8ToRgbInt16();
输出:
// 类型: int
000a001b002c
更多关于Flutter颜色管理插件uni_color_model的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter颜色管理插件uni_color_model的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用uni_color_model
插件进行颜色管理的示例代码。uni_color_model
插件允许你以一种统一的方式管理和转换颜色,非常适合需要复杂颜色处理的应用。
首先,确保你已经在pubspec.yaml
文件中添加了uni_color_model
依赖:
dependencies:
flutter:
sdk: flutter
uni_color_model: ^最新版本号 # 请替换为实际的最新版本号
然后,运行flutter pub get
来获取依赖。
接下来,在你的Dart文件中,你可以按照以下方式使用uni_color_model
:
import 'package:flutter/material.dart';
import 'package:uni_color_model/uni_color_model.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('uni_color_model 示例'),
),
body: ColorManagementExample(),
),
);
}
}
class ColorManagementExample extends StatelessWidget {
@override
Widget build(BuildContext context) {
// 创建一个 UniColor 对象
final UniColor uniColor = UniColor.fromRgb(255, 99, 71); // 示例颜色:番茄红
// 转换为 Hex 格式
String hexColor = uniColor.toHex();
print('Hex Color: $hexColor'); // 输出: #ff6347
// 转换为 RGB 格式
List<int> rgbColor = uniColor.toRgb();
print('RGB Color: ${rgbColor[0]}, ${rgbColor[1]}, ${rgbColor[2]}'); // 输出: 255, 99, 71
// 转换为 HSL 格式
List<double> hslColor = uniColor.toHsl();
print('HSL Color: ${hslColor[0].toStringAsFixed(2)}, ${hslColor[1].toStringAsFixed(2)}%, ${hslColor[2].toStringAsFixed(2)}%'); // 输出类似: 9.72, 100.00%, 64.31%
// 使用转换后的颜色
final Color flutterColor = Color(int.parse(hexColor.substring(1), radix: 16));
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Hex Color: $hexColor',
style: TextStyle(color: flutterColor),
),
SizedBox(height: 20),
ColoredBox(
color: flutterColor,
child: Container(
width: 100,
height: 100,
),
),
],
),
);
}
}
代码说明:
-
依赖导入:
- 导入
flutter/material.dart
用于基础UI组件。 - 导入
uni_color_model/uni_color_model.dart
用于颜色管理。
- 导入
-
创建
UniColor
对象:- 使用
UniColor.fromRgb(255, 99, 71)
创建一个表示番茄红的UniColor
对象。
- 使用
-
颜色转换:
- 使用
toHex()
方法将颜色转换为十六进制格式。 - 使用
toRgb()
方法将颜色转换为RGB格式。 - 使用
toHsl()
方法将颜色转换为HSL格式。
- 使用
-
颜色应用:
- 将十六进制颜色字符串转换为Flutter的
Color
对象,并应用于Text
和ColoredBox
组件。
- 将十六进制颜色字符串转换为Flutter的
通过这种方式,你可以利用uni_color_model
插件在Flutter应用中轻松管理和转换颜色。