From f5985e3e4939455da13226b59df3f26347691bb5 Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Mon, 8 Aug 2022 08:31:12 +0200 Subject: [PATCH] chore: Cache string colors --- lib/utils/string_color.dart | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/lib/utils/string_color.dart b/lib/utils/string_color.dart index f1d8bd3f4..1a628fbd7 100644 --- a/lib/utils/string_color.dart +++ b/lib/utils/string_color.dart @@ -1,30 +1,29 @@ import 'package:flutter/material.dart'; extension StringColor on String { - Color get color { + static final _colorCache = >{}; + + Color _getColorLight(double light) { var number = 0.0; for (var i = 0; i < length; i++) { number += codeUnitAt(i); } number = (number % 12) * 25.5; - return HSLColor.fromAHSL(1, number, 1, 0.35).toColor(); + return HSLColor.fromAHSL(1, number, 1, light).toColor(); + } + + Color get color { + _colorCache[this] ??= {}; + return _colorCache[this]![0.35] ??= _getColorLight(0.35); } Color get darkColor { - var number = 0.0; - for (var i = 0; i < length; i++) { - number += codeUnitAt(i); - } - number = (number % 12) * 25.5; - return HSLColor.fromAHSL(1, number, 1, 0.2).toColor(); + _colorCache[this] ??= {}; + return _colorCache[this]![0.2] ??= _getColorLight(0.2); } Color get lightColor { - var number = 0.0; - for (var i = 0; i < length; i++) { - number += codeUnitAt(i); - } - number = (number % 12) * 25.5; - return HSLColor.fromAHSL(1, number, 1, 0.40).toColor(); + _colorCache[this] ??= {}; + return _colorCache[this]![0.4] ??= _getColorLight(0.4); } }