检测颤动中颜色是浅还是深

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

有没有办法检查颜色是深还是浅,即颤动中的黑色或白色,并获得布尔值 true 或 false

flutter user-interface colors
3个回答
17
投票

您还可以使用该方法获取亮度并应用 W3C 指定的阈值。在 dart 代码中,这可能看起来像这样:

Color getFontColorForBackground(Color background) {
  return (background.computeLuminance() > 0.179)? Colors.black : Colors.white;
}

更多背景信息可以在这里找到:https://stackoverflow.com/a/3943023/3041394


10
投票

要检查颜色是深色还是浅色,我们需要将该颜色转换为其灰度颜色。从 RGB 值中查找任何颜色的灰度的公式是:

灰度 = (0.299 * 红色) + (0.587 * 绿色) + (0.114 * 蓝色)

然后检查:

if(grayscale > 128){
    // color is light
}else{
    // color is dark
}

0
投票

我一直在Linux上开发,但似乎无法检测到里面的亮度

Theme.of(context).brightness

所以我只获取当前脚手架背景颜色(如果是黑色或白色)。

bool kIsDarkMode(BuildContext context) {
  return Theme.of(context).scaffoldBackgroundColor == MyColors.black;
}
© www.soinside.com 2019 - 2024. All rights reserved.