如何反转颤振中的颜色?

wha*_*ver 3 colors flutter

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

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,
    ]);
  }
}
Run Code Online (Sandbox Code Playgroud)

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

mig*_*uno 6

根据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
Run Code Online (Sandbox Code Playgroud)
new_red   = 255 - old_red
new_green = 255 - old_green
new_blue  = 255 - old_blue
Run Code Online (Sandbox Code Playgroud)