Flutter UUID转换为HSL颜色插件uuid_to_hsl的使用

Flutter UUID转换为HSL颜色插件uuid_to_hsl的使用

这个包可以为给定的UUID v4生成一个颜色。给定相同的UUID,生成的颜色始终相同。

它通过从UUID中获取两个字节来在HSL颜色空间中生成一个随机的色调值,从而生成一个颜色。

getColorFromUuid 方法返回一个 Color 对象。

如果你想修改返回颜色的其他HSL值,你可以使用 getHSLColorFromUUID 方法。

示例用法:

color: UuidToHsl.getHSLColorFromUUID(_uuid, 0.7, 0.8, 0.9).toColor()

这将返回一个颜色对象,其透明度为0.7,饱和度为0.8,亮度为0.9,并且对于给定的UUID生成一个随机的色调值。

color: UuidToHsl.getColorFromUUID(_uuid)

这将返回一个颜色对象,其色调由UUID生成,并且使用默认的透明度0.9,饱和度0.9和亮度0.35。

它应该返回一个相当均匀的分布。例如,生成300个颜色的结果: color_distribution

完整示例代码

import 'package:flutter/material.dart';
import 'package:uuid/uuid.dart';
import 'package:uuid_to_hsl/uuid_to_hsl.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;
  String _uuid = Uuid().v4();

  void _incrementCounter() {
    setState(() {
      _counter++;
      _uuid = Uuid().v4();
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const Text(
              'Generated uuid is:',
            ),
            Text(
              '$_uuid',
              style: Theme.of(context).textTheme.headlineSmall!.copyWith(
                color: UuidToHsl.getHSLColorFromUUID(_uuid, 1.0, 1.0, 1.0).toColor(),
              ),
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
        backgroundColor: UuidToHsl.getColorFromUUID(_uuid),
      ),
    );
  }
}

更多关于Flutter UUID转换为HSL颜色插件uuid_to_hsl的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter UUID转换为HSL颜色插件uuid_to_hsl的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


uuid_to_hsl 是一个 Flutter 插件,用于将 UUID 转换为 HSL(色相、饱和度、亮度)颜色。这个插件可以用于根据 UUID 生成唯一的颜色,通常用于需要在 UI 中为不同的对象分配唯一颜色的场景。

安装插件

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

dependencies:
  flutter:
    sdk: flutter
  uuid_to_hsl: ^1.0.0  # 请检查最新版本

然后运行 flutter pub get 来安装插件。

使用插件

安装完成后,你可以在代码中使用 uuid_to_hsl 插件将 UUID 转换为 HSL 颜色。

import 'package:flutter/material.dart';
import 'package:uuid/uuid.dart';
import 'package:uuid_to_hsl/uuid_to_hsl.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('UUID to HSL Example'),
        ),
        body: Center(
          child: UUIDToHSLExample(),
        ),
      ),
    );
  }
}

class UUIDToHSLExample extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    // 生成一个 UUID
    var uuid = Uuid().v4();

    // 将 UUID 转换为 HSL 颜色
    HSLColor hslColor = UUIDToHSL.uuidToHSL(uuid);

    // 将 HSL 颜色转换为 Flutter 的 Color 对象
    Color color = hslColor.toColor();

    return Container(
      width: 200,
      height: 200,
      color: color,
      child: Center(
        child: Text(
          'UUID: $uuid',
          style: TextStyle(color: Colors.white),
        ),
      ),
    );
  }
}
回到顶部