Dim*_*las 7 colors dart flutter
对于我的应用程序,我想限制我的颜色调色板,因此我创建了一个充满包含颜色实例的常量的类:
class Colors
{
static var red = Color(0xFFFF1212);
static var blue = Color(0xFF1212FF);
static var green = Color(0xFF12F1FA);
}
Run Code Online (Sandbox Code Playgroud)
但有时MaterialColor
需要a。所以我需要以某种方式将 Color 实例转换为MaterialColor
实例。但建造者需要提供一个样本(某种调色板)。我怎样才能做到这一点?
MaterialColor getMaterialColor(Color color) {
final int red = color.red;
final int green = color.green;
final int blue = color.blue;
final int alpha = color.alpha;
final Map<int, Color> shades = {
50: Color.fromARGB(alpha, red, green, blue),
100: Color.fromARGB(alpha, red, green, blue),
200: Color.fromARGB(alpha, red, green, blue),
300: Color.fromARGB(alpha, red, green, blue),
400: Color.fromARGB(alpha, red, green, blue),
500: Color.fromARGB(alpha, red, green, blue),
600: Color.fromARGB(alpha, red, green, blue),
700: Color.fromARGB(alpha, red, green, blue),
800: Color.fromARGB(alpha, red, green, blue),
900: Color.fromARGB(alpha, red, green, blue),
};
return MaterialColor(color.value, shades);
}
Run Code Online (Sandbox Code Playgroud)
我发现这在将颜色转换为材质颜色方面非常准确
我的一种方法受到这篇文章的启发。我的方法是使用各种不透明度通道,在红色、绿色和蓝色通道上具有固定值。根据此文档,颜色还存储在单独的红色、绿色和蓝色通道中,可以通过实例变量访问这些通道。
有了这些拼图,我做了这个功能:
MaterialColor getMaterialColor(Color color) {
final int red = color.red;
final int green = color.green;
final int blue = color.blue;
final Map<int, Color> shades = {
50: Color.fromRGBO(red, green, blue, .1),
100: Color.fromRGBO(red, green, blue, .2),
200: Color.fromRGBO(red, green, blue, .3),
300: Color.fromRGBO(red, green, blue, .4),
400: Color.fromRGBO(red, green, blue, .5),
500: Color.fromRGBO(red, green, blue, .6),
600: Color.fromRGBO(red, green, blue, .7),
700: Color.fromRGBO(red, green, blue, .8),
800: Color.fromRGBO(red, green, blue, .9),
900: Color.fromRGBO(red, green, blue, 1),
};
return MaterialColor(color.value, shades);
}
Run Code Online (Sandbox Code Playgroud)
使用上面的代码我执行以下操作:
MaterialColor
我知道我可以使用第二个参数和色调数量,但这对我来说太麻烦了。就我而言,有某种固定的色调就足够了。
归档时间: |
|
查看次数: |
6791 次 |
最近记录: |