导航到新屏幕时状态栏颜色

3 dart flutter

我在第一个屏幕的方法中使用以下方法build()来更改状态栏颜色,效果很好。

// 1st screen's build() method
SystemChrome.setSystemUIOverlayStyle(
  SystemUiOverlayStyle(statusBarColor: Colors.green),
);
Run Code Online (Sandbox Code Playgroud)

但是,当我导航到第二个屏幕时,第一个屏幕状态栏颜色也会出现在第二个屏幕上。在第二个屏幕的build()方法中,我使用不同颜色的相同代码

// 2nd screen's build() method
SystemChrome.setSystemUIOverlayStyle(
  SystemUiOverlayStyle(statusBarColor: Colors.red),
);
Run Code Online (Sandbox Code Playgroud)

sgo*_*n00 6

我有类似的问题并找到了解决方案。最好的方法是使用Scaffold下的AnnotatedRegion而不使用AppBar(为null)而不是设置系统ui颜色的函数。appBarSystemChrome.setSystemUIOverlayStyle()

就像是:

Scaffold(
  body: AnnotatedRegion(
    value: SystemUiOverlayStyle(statusBarColor: Colors.red) 
    child: MyBodyWidget(),
  ),
);
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果您只想深色或浅色覆盖而不是颜色,则value可以。请注意,目前仅适用于 Android。SystemUiOverlayStyle.darkSystemUiOverlayStyle.lightstatusBarColor

另请注意,AnnotatedRegionappBar必须为 null(不存在)才能工作。您可以在MyBodyWidget中轻松编写自己的MyAppBar小部件。