Flutter颜色处理插件tinycolor的使用

发布于 1周前 作者 caililin 来自 Flutter

Flutter颜色处理插件tinycolor的使用

tinycolor

TinyColor 是一个用于 Flutter 颜色操作和转换的小型库。

该库是 tinycolor2 的移植版本,由 Brian Grinstead 开发。


Getting Started(开始使用)

tinycolor 接收一个 Color 对象作为参数。

import 'package:tinycolor/tinycolor.dart';

final TinyColor = TinyColor(Colors.green);

现在你还可以通过扩展 Color 类来使用所有相同的功能,但更简单。要启用扩展功能,请确保在 pubspec.yaml 中更新 SDK 版本,例如:

sdk: ">=2.6.0 <3.0.0"

从十六进制字符串创建颜色

该包使用 Pigment 库将字符串转换为 Color

TinyColor.fromString('#FE5567');

从 RGB 整数值创建颜色

TinyColor.fromRGB(r: 255, g: 255, b: 255);

从 HSL 颜色创建

HslColor color = HslColor(h: 250, s: 57, l: 30);
TinyColor.fromHSL(color);

从 HSV 颜色创建

HSVColor color = HSVColor(h: 250, s: 57, v: 30);
TinyColor.fromHSV(color);

从 Flutter 的 Color 创建

TinyColor tinyColor = Colors.blue.toTinyColor();

属性

color

返回操作后的 Flutter Color

final Color color = TinyColor(Colors.white).color;

方法

getBrightness

返回颜色的感知亮度,范围为 0-255,如 Web 内容无障碍指南 (版本 1.0) 所定义。

TinyColor.fromString("#ffffff").getBrightness(); // 255
TinyColor.fromString("#000000").getBrightness(); // 0
// 或使用 Color 扩展
Colors.grey.brightness;  // 127

isLight

返回一个布尔值,指示颜色的感知亮度是否较亮。

TinyColor.fromString("#ffffff").isLight(); // true
TinyColor.fromString("#000000").isLight(); // false
// 或使用 Color 扩展
Colors.white.isLight;  // true

isDark

返回一个布尔值,指示颜色的感知亮度是否较暗。

TinyColor.fromString("#ffffff").isDark(); // false
TinyColor.fromString("#000000").isDark(); // true
// 或使用 Color 扩展
Colors.white.isDark;  // false

getLuminance

返回颜色的感知亮度,等同于 Flutter 的 Color.computeLuminance

TinyColor.fromString("#ffffff").getLuminance();
// 或使用 Color 扩展
Colors.white.luminance;

setAlpha

设置当前颜色的透明度值。

final color = TinyColor(Colors.red).setAlpha(10);

setOpacity

设置当前颜色的不透明度值。

final color = TinyColor(Colors.red).setOpacity(0.5);

颜色修改

这些方法会操作当前颜色并返回结果以支持链式调用。例如:

TinyColor(Colors.red).lighten().desaturate().color;
// 或使用 Color 扩展
Colors.red.lighten().desaturate();

lighten

将颜色变亮给定的百分比,范围为 0-100。提供 100 将始终返回白色。

TinyColor(Colors.red).lighten().color;
TinyColor(Colors.red).lighten(100).color;
// 或使用 Color 扩展
Colors.red.lighten(50);

brighten

将颜色变亮给定的百分比,范围为 0-100

TinyColor(Colors.black).brighten().color;
// 或使用 Color 扩展
Colors.black.brighten(50);

darken

将颜色变暗给定的百分比,范围为 0-100。提供 100 将始终返回黑色。

TinyColor(Colors.red).darken().color;
TinyColor(Colors.red).darken(100).color;
// 或使用 Color 扩展
Colors.red.darken(50);

tint

将颜色与纯白色混合,范围为 0-100。提供 0 不做任何改变,提供 100 将始终返回白色。

TinyColor(Color.red).tint().color;
TinyColor(Color.red).tint(100).color;
// 或使用 Color 扩展
Colors.red.tint(50);

shade

将颜色与纯黑色混合,范围为 0-100。提供 0 不做任何改变,提供 100 将始终返回黑色。

TinyColor(Colors.red).shade().color;
TinyColor(Colors.red).shade(100).color;
// 或使用 Color 扩展
Colors.red.shade(50);

desaturate

将颜色去饱和度给定的百分比,范围为 0-100。提供 100 等同于调用 greyscale

TinyColor(Colors.red).desaturate().color;
TinyColor(Colors.red).desaturate(100).color;
// 或使用 Color 扩展
Colors.red.desaturate(50);

saturate

将颜色饱和度增加给定的百分比,范围为 0-100

TinyColor(Colors.red).saturate().color;
// 或使用 Color 扩展
Colors.red.saturate(50);

greyscale

完全去饱和度,将颜色变为灰度。等同于调用 desaturate(100)

TinyColor(Colors.red).greyscale().color;
// 或使用 Color 扩展
Colors.red.greyscale;

spin

旋转颜色的色调,范围为 -360 到 360。调用 0, 360-360 将不会改变颜色(因为它将色调重置为原来的值)。

TinyColor(Colors.red).spin(180).color;
// 或使用 Color 扩展
Colors.red.spin(180);

// spin(0) 和 spin(360) 不会改变颜色
TinyColor(Colors.red).spin(0).color;
TinyColor(Colors.red).spin(360).color;

compliment

返回互补色。

TinyColor(Colors.red).compliment().color;
// 或使用 Color 扩展
Colors.red.compliment;

mix

将颜色与另一个颜色混合,指定混合比例,范围为 0-100,默认为 50

TinyColor(Colors.red).mix(TinyColor(Colors.yellow), 20).color;
// 或使用 Color 扩展
Colors.red.mix(Colors.yellow, 20);

常见操作

clone

实例化一个新的 TinyColor 对象,具有相同的颜色。对新对象的更改不会影响旧对象。

final color1 = new TinyColor(Colors.red);
final color2 = color1.clone();
color2.setAlpha(20);

更多关于Flutter颜色处理插件tinycolor的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter颜色处理插件tinycolor的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


tinycolor 是一个非常流行的颜色处理库,它可以帮助你在 Flutter 中轻松处理颜色。虽然 tinycolor 最初是为 JavaScript 设计的,但在 Flutter 中也有类似的实现。你可以在 Flutter 中使用 tinycolor 来处理颜色转换、颜色操作等。

安装 tinycolor 插件

首先,你需要在 pubspec.yaml 文件中添加 tinycolor 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  tinycolor: ^1.0.0

然后运行 flutter pub get 来安装依赖。

使用 tinycolor 插件

tinycolor 提供了丰富的 API 来处理颜色。以下是一些常见的用法示例:

1. 创建颜色对象

你可以使用 TinyColor 类来创建一个颜色对象:

import 'package:tinycolor/tinycolor.dart';

void main() {
  var color = TinyColor(Color(0xFF00FF00)); // 使用 Flutter 的 Color 对象
  var color2 = TinyColor.fromString('#FF0000'); // 使用十六进制字符串
  var color3 = TinyColor.fromRGB(255, 0, 0); // 使用 RGB 值
}

2. 颜色转换

你可以将颜色转换为不同的格式:

var color = TinyColor.fromString('#FF0000');

print(color.toHex()); // 输出: #ff0000
print(color.toRgb()); // 输出: {"r":255,"g":0,"b":0}
print(color.toHsl()); // 输出: {"h":0,"s":1,"l":0.5}
print(color.toHsv()); // 输出: {"h":0,"s":1,"v":1}

3. 颜色操作

你可以对颜色进行各种操作,比如调整亮度、饱和度、透明度等:

var color = TinyColor.fromString('#FF0000');

var lightenColor = color.lighten(10); // 亮度增加10%
var darkenColor = color.darken(10); // 亮度减少10%
var saturateColor = color.saturate(10); // 饱和度增加10%
var desaturateColor = color.desaturate(10); // 饱和度减少10%
var spinColor = color.spin(90); // 色相旋转90度
var opacityColor = color.withOpacity(0.5); // 设置透明度为50%

4. 颜色比较

你可以比较两个颜色是否相同:

var color1 = TinyColor.fromString('#FF0000');
var color2 = TinyColor.fromString('#FF0000');

print(color1 == color2); // 输出: true

5. 获取颜色的亮度

你可以获取颜色的亮度值:

var color = TinyColor.fromString('#FF0000');

print(color.getBrightness()); // 输出: 0.299
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!