《Flutter 小技巧》一行禁用App,一行置灰App,致敬

887 阅读1分钟

为表达全国各族人民对抗击新冠肺炎疫情斗争牺牲烈士和逝世同胞的深切哀悼,国务院发布公告,决定2020年4月4日举行全国性哀悼活动。

在此期间,全国和驻外使领馆下半旗志哀,全国停止公共娱乐活动。4月4日10时起,全国人民默哀3分钟,汽车、火车、舰船鸣笛,防空警报鸣响。

这一天,我们看到几乎所有的网页、App一夜之间都变成了灰色,所有的游戏、直播停服,哪有什么岁月静好,只不过是有人在为你负重前行。

作为一个程序开发者,我们可以用程序员独有的方式表达对抗战在一线工作者的致敬 -禁用App,致灰App。希望这个功能永远不会有再开启的一天。

禁用App

禁用App设置如下:

@override
Widget build(BuildContext context) {
  return IgnorePointer(
    ignoring: _ignoring,
    child: MaterialApp(
      title: 'Flutter Fly',
      theme: ThemeData(
          primaryColor: Colors.white,
          accentColor: Color(0xFF5DC782),
          backgroundColor: Color(0xFFF2F2F2)),
      routes: Routes.routes,
      initialRoute: Routes.home_page,
      debugShowCheckedModeBanner: false,
    ),
  );
}

只需在组件的最外层包裹IgnorePointer或者AbsorbPointer组件,_ignoring为变量,可以通过服务器下发,为true时,表示禁用。

置灰App

设置如下:

@override
Widget build(BuildContext context) {
  return ColorFiltered(
    colorFilter: ColorFilter.mode(Colors.grey, BlendMode.color),
    child: MaterialApp(
      title: 'Flutter Fly',
      theme: ThemeData(
          primaryColor: Colors.white,
          accentColor: Color(0xFF5DC782),
          backgroundColor: Color(0xFFF2F2F2)),
      routes: Routes.routes,
      initialRoute: Routes.home_page,
      debugShowCheckedModeBanner: false,
    ),
  );
}

在组件最外层包裹ColorFiltered,使整个App变为灰色,包括图片资源。

交流

老孟Flutter博客地址(近200个控件用法):laomengit.com