我在第一个屏幕的方法中使用以下方法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)
我有类似的问题并找到了解决方案。最好的方法是使用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小部件。
| 归档时间: |
|
| 查看次数: |
3405 次 |
| 最近记录: |