一行代码用Flutter实现首页变灰效果向逝去的人们致哀

1,598 阅读1分钟

2020年是多灾多难的一年,让我们在清明这一天,通过把首页置灰的形式向逝去的人们表达缅怀之情~

上Demo效果把:

怎么实现的呢?

就是用ColorFiltered组件,用ColorFiltered组件包裹我们的MaterialApp就行了。代码如下:


void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ColorFiltered(
        colorFilter: ColorFilter.mode(Colors.grey, BlendMode.color),
        child: MaterialApp(
          title: 'Flutter Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: MyHomePage(title: 'Flutter Demo Home Page'),
        ));
  }
}

[ColorFiltered] Applies a [ColorFilter] to its child.也就是说colorFiltered会给自己的子组件添加一个滤镜效果。

斯人已逝,生者坚强,怎么恢复颜色呢?

聪明的你一定想到了,就是把colorFilter颜色设置为透明

 colorFilter: ColorFilter.mode(Colors.transparent, BlendMode.color),

当然通过服务器下发的方式,更加灵活的控制页面颜色滤镜,你一定也会了~