fluffychat/lib/utils/string_color.dart

30 lines
732 B
Dart
Raw Normal View History

2020-01-18 13:22:22 +01:00
import 'package:flutter/material.dart';
extension StringColor on String {
2022-08-08 08:31:12 +02:00
static final _colorCache = <String, Map<double, Color>>{};
Color _getColorLight(double light) {
2020-06-25 09:15:53 +02:00
var number = 0.0;
for (var i = 0; i < length; i++) {
number += codeUnitAt(i);
}
2021-07-31 20:12:18 +02:00
number = (number % 12) * 25.5;
2022-08-08 08:31:12 +02:00
return HSLColor.fromAHSL(1, number, 1, light).toColor();
}
Color get color {
_colorCache[this] ??= {};
return _colorCache[this]![0.35] ??= _getColorLight(0.35);
2020-06-25 09:15:53 +02:00
}
2021-01-16 21:50:01 +01:00
Color get darkColor {
2022-08-08 08:31:12 +02:00
_colorCache[this] ??= {};
return _colorCache[this]![0.2] ??= _getColorLight(0.2);
2021-01-16 21:50:01 +01:00
}
2020-06-25 09:15:53 +02:00
Color get lightColor {
2022-08-08 08:31:12 +02:00
_colorCache[this] ??= {};
return _colorCache[this]![0.7] ??= _getColorLight(0.7);
2020-01-18 13:22:22 +01:00
}
}