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

Tom*_*van 11 navbar dart flutter

如何使用Android Studios更改系统NavBar并且颤动?

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

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

Jon*_*ams 23

注意:这需要更新版本的Flutter,因为它引用了上周添加的API.

您可以SystemUiOverlayStyle使用默认构造函数创建自定义.系统导航栏的颜色在那里定义.但是为避免设置大量空值,请使用该copyWith方法更新现有明/暗主题中的值.

const mySystemTheme= SystemUiOverlayStyle.light
 .copyWith(systemNavigationBarColor: Colors.red);
Run Code Online (Sandbox Code Playgroud)

您可以使用SystemChrome静态方法强制设置系统导航颜色.

SystemChrome.setSystemUiOverlayStyle(mySystemTheme);
Run Code Online (Sandbox Code Playgroud)

但是,如果您有多个小部件设置此值,或使用材料AppBar或cupertino NavBar,您的值可能会被它们覆盖.相反,您可以使用新的AnnotatedRegion API告诉颤动,只要某些小部件可见,它就会自动切换到此样式.例如,如果您想在任何时候使用上面的主题,那么您可以将它包装在AnnotatedRegion小部件中,就像这样.

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

不会但是如果你弹出的路线更改主题回到以前的值

  • 目前,flutter 视图结合了在实际层树中屏幕顶部和底部相交的系统铬值。因此,如果屏幕顶部有 3 个带注释的区域,则会选择最后一个。这是一种低级 API,我们打算在材料和库比蒂诺的基础上构建一个更简单的 API (2认同)
  • @JonahWilliams我尝试使用“AnnotatedRegion”作为“Scaffold”的父级,定义“statusBarColor:Colors.transparent”,但它不起作用,看来“AppBar”始终优先。 (2认同)

Cop*_*oad 13

您可以使用SystemChrome类更改状态栏和导航栏颜色.

import 'package:flutter/services.dart';

SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
  systemNavigationBarColor: Colors.blue, // navigation bar color
  statusBarColor: Colors.pink, // status bar color
));
Run Code Online (Sandbox Code Playgroud)

  • 这是行不通的 (8认同)

Rém*_*let 7

您可以简单地致电SystemChrome.setSystemUIOverlayStyle

import 'package:flutter/services.dart

SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.light);
Run Code Online (Sandbox Code Playgroud)

  • 这有效,但相当不稳定,因为有时它有效,而且通常只有在几次热重载之后才有效,但我猜现在总比没有好! (2认同)