使用注释区域后如何将状态栏恢复为默认值?



在初始屏幕上,我正在使用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))

最新更新