Как вернуть строку состояния к значениям по умолчанию после использования AnnotatedRegion? - PullRequest
0 голосов
/ 30 мая 2020

На начальных экранах я использую AnnotatedRegion, чтобы изменить цвет строки состояния на белый.

AnnotatedRegion<SystemUiOverlayStyle>(
  value: SystemUiOverlayStyle.light.copyWith(statusBarColor: Colors.white),
  child: ...
)

Приведенный выше код изменяет цвет строки состояния на белый, но он также влияет на другие экраны в приложении, где Я не использую AnnotatedRegion, теперь строка состояния всех из них белая, так как мне вернуть значения по умолчанию на этих экранах c.

Видел что-то вроде ниже в другом стеке ответы переполнения, но они не работают в моем случае:

SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values);
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.dark);

Итак, как я могу вернуть строку состояния с поведением по умолчанию, то есть она автоматически имеет немного темного цвета, чем любой цвет панели приложения ?

1 Ответ

0 голосов
/ 30 мая 2020

Обернуть каждый экран в AnnotatedRegion<SystemUiOverlayStyle>

Если у вас уже есть AppBar на каждом экране, вы должны настроить его яркость

AppBar сам оборачивает контент в AnnotatedRegion и устанавливает его value: overlayStyle этим способ

final Brightness brightness = widget.brightness
  ?? appBarTheme.brightness
  ?? theme.primaryColorBrightness;
final SystemUiOverlayStyle overlayStyle = brightness == Brightness.dark
  ? SystemUiOverlayStyle.light
  : SystemUiOverlayStyle.dark;

Для первой попытки решить вашу проблему установите для всех экранов яркость AppBar на желаемое значение, как в примере

Page1:

Scaffold(appBar: AppBar(brightness: Brightness.dark))

Page2:

Scaffold(appBar: AppBar(brightness: Brightness.light))
...