如何检查背景色的亮度以决定书写在其上的文字颜色

问题描述 投票:0回答:1

我有一个简单的问题,但是我找不到答案。请注意,我几乎是一个完整的初学者。

因此,我有一个应用程序(不是我的应用程序,但我在为此做出贡献),并且在彩色背景上书写,可以由用户更改。如果背景足够明亮,则文字应显示为黑色,否则,请保持白色。

[该应用程序是面向中小学生的学校日记应用程序,可连接到匈牙利的全州范围的学校日记服务。此处,最好的音调是5,最差的音调是1。用户可以在设置中设置每个等级的颜色。现在,只有音符“ 4”的代码被硬编码为黑色文本(因为默认情况下,“ 4”音符的背景为黄色),所有其他字符均为白色。这是我要自动化的。

Example of white text

Example of black text

This is the main screen of the app for reference

Page where user can change color for a kind of note

现在的代码:

switch (evaluation.NumberValue) {
    case 1:
      bColor = globals.color1;
      fColor = Colors.white;
      break;
    case 2:
      bColor = globals.color2;
      fColor = Colors.white;
      break;
    case 3:
      bColor = globals.color3;
      fColor = Colors.white;
      break;
    case 4:
      bColor = globals.color4;
      fColor = Colors.black; //This should be white if color4 is dark enough. Same applies to all of them.
      break;
    case 5: //I'm looking for something like this:
      bColor = globals.color5;
      fColor = (lightLevel(globals.color5) > 50) ? Colors.black : Colors.white;
      break;
    default:
      bColor = Colors.black;
      fColor = Colors.white;
      break;
  }

我正在寻找这样的东西:

 case 5: //I'm looking for something like this:
  bColor = globals.color5;
  fColor = (lightLevel(globals.color5) > 50) ? Colors.black : Colors.white;
  break;

谢谢您的帮助!

flutter colors background brightness luminance
1个回答
0
投票

我可以建议2个选项:

  1. [Brightness.estimateBrightnessForColor方法,例如]
Brightness.estimateBrightnessForColor

  1. [Color calculateTextColor(Color background) { return Brightness.estimateBrightnessForColor(background) == Brightness.light ? Colors.black : Colors.white; } 方法,例如]
Color.computeLuminance

尽管后一个描述为Color.computeLuminance

请让我知道是否有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.