在初始屏幕上,我正在使用AnnotatedRegion
将状态栏的颜色更改为白色。
AnnotatedRegion<SystemUiOverlayStyle>(
value: SystemUiOverlayStyle.light.copyWith(statusBarColor: Colors.white),
child: ...
)
上面的代码将状态栏颜色更改为白色,但它也会影响应用程序中我不使用AnnotatedRegion
的其他屏幕,现在所有这些屏幕的状态栏都是白色的,所以我如何将其恢复为这些特定屏幕上的默认值。
在其他一些堆栈溢出答案上看到了类似以下内容的内容,但它们在我的情况下不起作用:
SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values);
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.dark);
那么我如何才能以默认行为恢复状态栏,即它自动具有比应用栏的任何颜色更深的颜色?
将每个屏幕包装在AnnotatedRegion<SystemUiOverlayStyle>
如果您已经在每个屏幕上都有AppBar
,则应配置其亮度
应用栏本身将内容包装在注释区域中,并以这种方式设置其value: overlayStyle
final Brightness brightness = widget.brightness
?? appBarTheme.brightness
?? theme.primaryColorBrightness;
final SystemUiOverlayStyle overlayStyle = brightness == Brightness.dark
? SystemUiOverlayStyle.light
: SystemUiOverlayStyle.dark;
对于解决问题的第一个尝试,将所有屏幕AppBar亮度设置为所需的值,如示例所示
页1:
Scaffold(appBar: AppBar(brightness: Brightness.dark))
页2:
Scaffold(appBar: AppBar(brightness: Brightness.light))