Line data Source code
1 : // Copyright 2023 The terCAD team. All rights reserved. 2 : // Use of this source code is governed by a CC BY-NC-ND 4.0 license that can be found in the LICENSE file. 3 : 4 : import 'dart:math'; 5 : 6 : import 'package:flutter/material.dart'; 7 : 8 : extension ColorExt on Color { 9 0 : MaterialColor get toMaterialColor { 10 0 : final Map<int, Color> colorMap = {}; 11 0 : for (int i = 50; i <= 900; i += 100) { 12 0 : colorMap[i] = Color.fromRGBO(red, green, blue, i / 1000.0); 13 : } 14 0 : return MaterialColor(value, colorMap); 15 : } 16 : 17 0 : static Color getRandom() { 18 : List<Color> colors = Colors.primaries; 19 0 : Random random = Random(); 20 0 : return colors[random.nextInt(colors.length)]; 21 : } 22 : 23 0 : static MaterialColor getRandomMaterialColor() { 24 0 : return getRandom().toMaterialColor; 25 : } 26 : 27 0 : Color mesh(Color color, double percent) => 28 0 : HSLColor.lerp(HSLColor.fromColor(this), HSLColor.fromColor(color), percent)!.toColor(); 29 : }