首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用AnnotatedRegion后将状态栏恢复为默认值?

如何在使用AnnotatedRegion后将状态栏恢复为默认值?
EN

Stack Overflow用户
提问于 2020-05-30 19:39:33
回答 1查看 119关注 0票数 0

在初始屏幕上,我使用AnnotatedRegion将状态栏的颜色更改为白色。

代码语言:javascript
复制
AnnotatedRegion<SystemUiOverlayStyle>(
  value: SystemUiOverlayStyle.light.copyWith(statusBarColor: Colors.white),
  child: ...
)

上面的代码将状态栏颜色更改为白色,但它也会影响应用程序中我没有使用AnnotatedRegion的其他屏幕,现在所有这些屏幕的状态栏都是白色的,那么我如何将其恢复为这些特定屏幕上的默认值。

在其他一些堆栈溢出答案上看到了类似下面的内容,但它们在我的案例中不起作用:

代码语言:javascript
复制
SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values);
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.dark);

那么,我如何才能使状态栏以默认行为返回,即它自动具有比应用程序栏的任何颜色更暗的颜色?

EN

回答 1

Stack Overflow用户

发布于 2020-05-31 01:58:02

AnnotatedRegion<SystemUiOverlayStyle>中环绕每个屏幕

如果你已经在每个屏幕上安装了AppBar,你应该配置它的亮度

AppBar本身将内容包装在AnnotatedRegion中,并将其value: overlayStyle设置为

代码语言:javascript
复制
final Brightness brightness = widget.brightness
  ?? appBarTheme.brightness
  ?? theme.primaryColorBrightness;
final SystemUiOverlayStyle overlayStyle = brightness == Brightness.dark
  ? SystemUiOverlayStyle.light
  : SystemUiOverlayStyle.dark;

首先尝试解决您的问题,请将所有屏幕的AppBar亮度设置为所需的值,如下例所示

Page1:

代码语言:javascript
复制
Scaffold(appBar: AppBar(brightness: Brightness.dark))

Page2:

代码语言:javascript
复制
Scaffold(appBar: AppBar(brightness: Brightness.light))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62101879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档