微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

你如何在颤振中反转颜色?

如何解决你如何在颤振中反转颜色?

我有一个用于创建渐变效果的小部件:

class GradientContainer extends StatelessWidget {
  final child;

  GradientContainer({@required this.child});
  @override
  Widget build(BuildContext context) {
    return Stack(children: [
      Positioned(
          left: 5,top: 17,bottom: 5,right: 9,child: ClipRRect(
            borderRadius: BorderRadius.circular(4),child: Container(
              decoration: Boxdecoration(
                  gradient: LinearGradient(
                      begin: Alignment.topLeft,end: Alignment.bottomright,stops: [
                    0.0,1.0
                  ],colors: [
                    Colors.black.withOpacity(0.0),Theme.of(context).scaffoldBackgroundColor.withOpacity(0.8),])),),)),child,]);
  }
}

这很有效,直到用户切换到深色主题并且无法非常清晰地调整渐变。所以,我想做一些类似 Theme.of(context).scaffoldBackgroundColor.invertColor().withOpacity(0.8) 的事情,这样我就可以得到身体的反转颜色,无论主题如何,我都能在渐变上创造出良好的对比。有人知道怎么做吗?我试过在网上查找,但我能找到的只是如何将反转过滤器应用到图像上。

解决方法

根据http://www.vb-helper.com/howto_invert_color.html

您可以通过减去红色、绿色和蓝色中的每一个来反转颜色 来自 255 的组件。换句话说:

new_red   = 255 - old_red
new_green = 255 - old_green
new_blue  = 255 - old_blue
Color invert(Color color) {
  final r = 255 - color.red;
  final g = 255 - color.green;
  final b = 255 - color.blue;

  return Color.fromARGB((color.opacity * 255).round(),r,g,b);
}

void main() {
  final inverted = invert(Colors.deepOrange);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。