无法在Flutter应用中更改状态栏图标亮度?

时间:2019-12-04 07:27:40

标签: flutter flutter-layout

在main.dart中

void main() {
SystemChrome.setSystemUIOverlayStyle(
SystemUiOverlayStyle(
  statusBarColor: Colors.black.withOpacity(0), //top bar color
  statusBarIconBrightness: Brightness.dark, //top bar icons
  systemNavigationBarColor: Colors.black, //bottom bar color
  systemNavigationBarIconBrightness: Brightness.light, //bottom bar icons
),
);
runApp(MyApp());
}

class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
 Widget build(BuildContext context) {
return MaterialApp(
  theme: ThemeData(
    //primaryColor: Color.fromRGBO(113, 201, 206, 1),
    fontFamily: 'Montserrat',
    textTheme: TextTheme(
      headline: TextStyle(
        fontSize: 40,
        fontWeight: FontWeight.w500,
      ),
      title: TextStyle(
        fontWeight: FontWeight.w700,
        fontSize: 16,
      ),
      body1: TextStyle(
        fontSize: 12,
      ),
    ),
  ),
  home: Test(),
  routes: {
    MainScreen.routeName: (context) => MainScreen(),
  },
);
}
}

我正在使用上面的代码来更改状态栏的颜色,statusBarIconBrightness: Brightness.dark无效。 它变黑,但几秒钟后又切换回“ Brightness.light”。 怎么了?

在Android模拟器上运行。 我不想将appBar小部件插入Test()

3 个答案:

答案 0 :(得分:2)

那是因为您没有在AppBar页中显式更改brightness的{​​{1}}。运行以下代码,看看有什么区别:

Test

输出1(亮度​​。暗):

enter image description here

输出2(亮度):

enter image description here

答案 1 :(得分:0)

我正在尝试类似的操作,但是状态栏是透明的而不是蓝色。我添加了以下内容,并且有效:

theme: ThemeData(
  appBarTheme: AppBarTheme(
    brightness: Brightness.light,

答案 2 :(得分:0)

@CopsOnRoad 的回答对我有用,但有点扭曲。您有时会看到 Brightness 类以这种有趣的方式制造混乱。意思是,如果你想让状态栏图标变成白色,你必须使用 Brightness.dark 而不是 Brightness.light。我就是这样做的,然后轰隆隆!它开始工作了。只需接受@CopsOnRoad 的回答并将light 更改为dark。至少这对我有用。 我得出的结论是,在这种特殊情况下,设置 Brightness.light 意味着“将状态栏图标的颜色更改为适合浅色状态栏(白色或类似颜色的状态栏背景)的某种颜色,这意味着系统将设置图标变黑,以便用户能够看到图标。 希望这有帮助!