代码之家  ›  专栏  ›  技术社区  ›  Tom O'Sullivan

颤振系统导航栏和状态栏颜色

  •  8
  • Tom O'Sullivan  · 技术社区  · 7 年前

    如何使用android studio和flutter更改系统导航栏?

    我想它不在main.dart中,我需要浏览android系统文件,但是当我试图编辑style.xml时,主题编辑器不允许我编辑任何颜色。

    任何帮助都将不胜感激,我想有一个轻导航栏去与一个轻底部AppBar。

    3 回复  |  直到 6 年前
        1
  •  19
  •   WSBT    6 年前

    注:这需要更新版本的flutter,因为它引用了2018年6月添加的api 是的。

    您可以创建自定义 SystemUiOverlayStyle 使用默认构造函数。系统导航栏的颜色在此处定义。但是为了避免设置很多空值,可以使用 copyWith 方法从现有的亮/暗主题更新值。

    const mySystemTheme= SystemUiOverlayStyle.light
     .copyWith(systemNavigationBarColor: Colors.red);
    

    您可以使用 SystemChrome 静态方法。

    SystemChrome.setSystemUiOverlayStyle(mySystemTheme);
    

    但是,如果有多个小部件设置此值,或者使用材质appbar或cupertino navbar,则这些小部件可能会覆盖您的值。相反,当任何特定的小部件都可见时,您可以使用这个新的API来告诉它自动切换到这种样式。例如,如果你想在某个路线上使用上面的主题,你可以把它包在一个带注释的区域控件中。

    Widget myRoute(BuildContext context) {
      return new AnnotatedRegion<SystemUiOverlayStyle>(
        value: mySystemTheme,
        child: new MyRoute(),
      );
    }
    

    这个 不会 但是,如果弹出路由,请将主题改回上一个值

        2
  •  12
  •   CopsOnRoad    6 年前

    你可以用 SystemChrome 类更改状态栏和导航栏颜色。

    import 'package:flutter/services.dart';
    
    SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
      systemNavigationBarColor: Colors.blue, // navigation bar color
      statusBarColor: Colors.pink, // status bar color
    ));
    
        3
  •  6
  •   Rémi Rousselet    7 年前

    你可以直接打电话 SystemChrome.setSystemUIOverlayStyle :

    import 'package:flutter/services.dart
    
    SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light);