randomColorInRange static method

Color randomColorInRange(
  1. Color baseColor, {
  2. double variation = 0.2,
})

基于指定基色生成相近色随机颜色

baseColor:基础颜色。 variation:变化范围0.0, 1.0,数值越大颜色可变化越大,默认0.2。

示例:

Color newColor = CommonUtil.randomColorInRange(Colors.blue, variation: 0.1);
print(newColor);

返回值: 返回一个颜色值接近基色的随机Color对象。

Implementation

static Color randomColorInRange(Color baseColor, {double variation = 0.2}) {
  assert(variation >= 0.0 && variation <= 1.0,
      'variation must be between 0.0 and 1.0');

  final random = Random.secure();
  final range = (255 * variation).toInt();

  // 使用 Color.withValues() 方法来创建新颜色
  return baseColor.withValues(
    red: (baseColor.r + (random.nextInt(range) - (range ~/ 2)) / 255)
        .clamp(0.0, 1.0),
    green: (baseColor.g + (random.nextInt(range) - (range ~/ 2)) / 255)
        .clamp(0.0, 1.0),
    blue: (baseColor.b + (random.nextInt(range) - (range ~/ 2)) / 255)
        .clamp(0.0, 1.0),
  );
}