Flutter颜色处理插件flutter_color_utils的使用

Flutter颜色处理插件flutter_color_utils的使用

引言

Color Utils 是一个用于处理颜色的强大包。

特性

  • 混合多种颜色
  • 计算两种颜色的匹配百分比
  • 从十六进制字符串生成颜色
  • 颜色烹饪器(根据基础颜色列表生成目标颜色的调色板列表)

开始使用

1. 安装依赖

pubspec.yaml 文件中添加以下依赖:

dependencies:
  color_utils:
    git:
      url: https://github.com/shawon1fb/color_utils.git

2. 导入依赖

在你的 Dart 文件中导入以下包:

import 'package:color_utils/flutter_color_utils.dart';

使用示例

1. 多种颜色混合

// 定义三种颜色
Color red = const Color(0xFF890041);
Color yellow = const Color(0xffFFCE51);
Color blue = const Color(0xff00224C);

// 创建颜色混合列表
List<Color> spicyMixerList = [yellow, red, blue];

// 混合颜色
Color mix = ColorUtils.mixColors(spicyMixerList);

// 预期的混合颜色
Color spicyMixColor = const Color(0xff83504A);

// 打印结果,检查是否相等
print(spicyMixColor == mix); // 输出: true

2. 十六进制颜色字符串转为颜色

// 定义一个颜色
Color red = const Color(0xFF890041);

// 将十六进制字符串转换为颜色
Color redHexColor = HexColor('#890041');

// 打印结果,检查是否相等
print(red == redHexColor); // 输出: true
print(redHexColor == red); // 输出: true

3. 计算两种颜色的匹配百分比

// 定义两种颜色
Color spicyMixColor = const Color(0xff83504A);
Color pelorousColor = const Color(0xff44AABB);

// 计算匹配百分比
double match = spicyMixColor.match(pelorousColor);
double expected = 64.31;

// 打印结果,检查是否接近预期值
print(((match - expected) < 0.02)); // 输出: true

4. 颜色烹饪器

// 定义目标颜色
Color spicyMixColor = const Color(0xff83504A);

// 定义基础颜色列表
List<Color> baseColorList = [
  const Color(0xFF890041),
  const Color(0xffFFCE51),
  const Color(0xff00224C),
  const Color(0xffFFFFFF),
  const Color(0xff21211A),
];

// 创建颜色配方对象
ColorRecipe colorReversed = ColorRecipe(
  baseColorsList: baseColorList,
  targetColor: spicyMixColor,
);

// 获取颜色配方
colorReversed.getColorRecipe(<Color>[]);

// 打印结果
print(colorReversed.bestList);
print(colorReversed.globalMaxMatch == 100.0); // 输出: true

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

1 回复

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


当然,下面是一个关于如何使用Flutter颜色处理插件flutter_color_utils的示例代码。这个插件提供了一些有用的方法来处理和转换颜色。

首先,确保你已经在pubspec.yaml文件中添加了flutter_color_utils依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_color_utils: ^latest_version  # 请替换为最新的版本号

然后运行flutter pub get来获取依赖。

接下来,你可以在你的Flutter应用中导入并使用flutter_color_utils。以下是一个示例代码,展示了如何使用该插件来处理颜色:

import 'package:flutter/material.dart';
import 'package:flutter_color_utils/flutter_color_utils.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Color Utils Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              // 原始颜色
              ColorCard(color: Colors.blue, label: 'Original Color'),
              
              // 使用 flutter_color_utils 将颜色转换为 HEX 格式
              ColorCard(
                color: ColorUtils.fromHex(ColorUtils.toHex(Colors.blue)),
                label: 'Color from HEX',
              ),
              
              // 使用 flutter_color_utils 将颜色转换为 RGB 格式
              ColorCard(
                color: ColorUtils.fromRgb(
                  ColorUtils.red(Colors.blue),
                  ColorUtils.green(Colors.blue),
                  ColorUtils.blue(Colors.blue),
                ),
                label: 'Color from RGB',
              ),
              
              // 使用 flutter_color_utils 将颜色转换为 HSL 格式
              ColorCard(
                color: ColorUtils.fromHsl(
                  ColorUtils.hue(Colors.blue),
                  ColorUtils.saturation(Colors.blue),
                  ColorUtils.lightness(Colors.blue),
                ),
                label: 'Color from HSL',
              ),
              
              // 使用 flutter_color_utils 将颜色转换为 HSV 格式
              ColorCard(
                color: ColorUtils.fromHsv(
                  ColorUtils.hue(Colors.blue),
                  ColorUtils.saturation(Colors.blue),
                  ColorUtils.value(Colors.blue),
                ),
                label: 'Color from HSV',
              ),
              
              // 使用 flutter_color_utils 获取颜色的亮度(Luminance)
              Text(
                'Luminance of blue color: ${ColorUtils.luminance(Colors.blue)}',
                style: TextStyle(fontSize: 18),
              ),
              
              // 使用 flutter_color_utils 将颜色变暗
              ColorCard(
                color: ColorUtils.darken(Colors.blue, 0.2),
                label: 'Darkened Color',
              ),
              
              // 使用 flutter_color_utils 将颜色变亮
              ColorCard(
                color: ColorUtils.lighten(Colors.blue, 0.2),
                label: 'Lightened Color',
              ),
            ],
          ),
        ),
      ),
    );
  }
}

// 一个简单的用于展示颜色的卡片组件
class ColorCard extends StatelessWidget {
  final Color color;
  final String label;

  ColorCard({required this.color, required this.label});

  @override
  Widget build(BuildContext context) {
    return Card(
      child: ListTile(
        leading: Container(
          width: 50,
          height: 50,
          color: color,
        ),
        title: Text(label),
      ),
    );
  }
}

在这个示例中,我们展示了如何使用flutter_color_utils进行以下操作:

  1. 将颜色转换为HEX、RGB、HSL和HSV格式。
  2. 获取颜色的亮度(Luminance)。
  3. 将颜色变暗和变亮。

你可以根据需求扩展这个示例,以利用flutter_color_utils提供的更多功能。

回到顶部