Skip to content

Commit cc1ca2a

Browse files
committed
Proper statusbar theme integration in app
1 parent 380d2d1 commit cc1ca2a

File tree

3 files changed

+50
-18
lines changed

3 files changed

+50
-18
lines changed

lib/configs/AppTheme.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ class AppTheme {
1111
static Color cardBg;
1212
static Color background;
1313
static Color background2;
14+
static Color background2Dark;
15+
static Color background2Light;
1416
static Color backgroundSub;
1517

1618
static Color shadow;
@@ -64,6 +66,9 @@ class AppTheme {
6466
subText2 = Colors.black.withOpacity(0.60);
6567
subText3 = Colors.black.withOpacity(0.40);
6668

69+
background2Dark = TinyColor(theme.darkBackground).lighten(7).color;
70+
background2Light = light.toTinyColor().darken(5).color;
71+
6772
if (isDark()) {
6873
background = theme.darkBackground;
6974
background2 = TinyColor(theme.darkBackground).lighten(7).color;

lib/configs/StatusBar.dart

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import 'package:flutter_uis/utils/UIUtils.dart';
44

55
const MODE = 'mode';
66
const LIGHT = 'light';
7+
const LIGHT_NAVDARK = 'light_navDark';
78
const DARK = 'dark';
89

910
final statusBarMap = {
@@ -20,14 +21,14 @@ final statusBarMap = {
2021
AppRoutes.hfdDetail: MODE,
2122

2223
// Hot Air Balloon
23-
AppRoutes.habHome: MODE,
24+
AppRoutes.habHome: LIGHT,
2425
AppRoutes.habDetail: MODE,
2526

2627
// Sky View
2728
AppRoutes.skvHome: MODE,
28-
AppRoutes.skvDetail: MODE,
29+
AppRoutes.skvDetail: LIGHT_NAVDARK,
2930

30-
AppRoutes.ascHome: MODE,
31+
AppRoutes.ascHome: LIGHT,
3132

3233
AppRoutes.etcHome: MODE,
3334
};
@@ -37,10 +38,25 @@ class StatusBarHandler {
3738
final theme = statusBarMap[route];
3839
switch (theme) {
3940
case DARK:
40-
return UIUtils.getThemeStatusBar(context, Brightness.dark);
41+
return UIUtils.getThemeStatusBar(
42+
context,
43+
statusBarBrightness: Brightness.light,
44+
navBarBrightness: Brightness.light,
45+
);
4146
break;
4247
case LIGHT:
43-
return UIUtils.getThemeStatusBar(context, Brightness.light);
48+
return UIUtils.getThemeStatusBar(
49+
context,
50+
statusBarBrightness: Brightness.dark,
51+
navBarBrightness: Brightness.dark,
52+
);
53+
break;
54+
case LIGHT_NAVDARK:
55+
return UIUtils.getThemeStatusBar(
56+
context,
57+
statusBarBrightness: Brightness.dark,
58+
navBarBrightness: Brightness.light,
59+
);
4460
break;
4561
default:
4662
return UIUtils.getThemeStatusBar(context);

lib/utils/UIUtils.dart

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,30 +7,41 @@ import 'package:flutter_uis/io/io.dart';
77

88
class UIUtils {
99
static SystemUiOverlayStyle getThemeStatusBar(
10-
BuildContext context, [
11-
Brightness forceBrightness,
12-
]) {
10+
BuildContext context, {
11+
Brightness statusBarBrightness,
12+
Brightness navBarBrightness,
13+
}) {
1314
final isDark = App.isDark(context);
14-
final brightness =
15-
forceBrightness ?? (isDark ? Brightness.light : Brightness.dark);
15+
final brightness = isDark ? Brightness.light : Brightness.dark;
1616
final base = brightness == Brightness.dark
1717
? SystemUiOverlayStyle.light
1818
: SystemUiOverlayStyle.dark;
1919

2020
if (Platform.isIOS) {
2121
final brightness = (!isDark ? Brightness.light : Brightness.dark);
2222
return base.copyWith(
23-
statusBarBrightness: brightness,
24-
statusBarIconBrightness: brightness,
25-
systemNavigationBarIconBrightness: brightness,
23+
statusBarBrightness: statusBarBrightness ?? brightness,
24+
statusBarIconBrightness: statusBarBrightness ?? brightness,
25+
systemNavigationBarIconBrightness: statusBarBrightness ?? brightness,
2626
);
2727
} else {
28+
final reverse = statusBarBrightness == Brightness.light
29+
? Brightness.dark
30+
: Brightness.light;
31+
32+
Color systemNavigationBarColor = AppTheme.background;
33+
Color systemNavigationBarDividerColor = AppTheme.background2;
34+
if (navBarBrightness == Brightness.light) {
35+
systemNavigationBarColor = AppTheme.dark;
36+
systemNavigationBarDividerColor = AppTheme.background2Dark;
37+
}
2838
return (base.copyWith(
29-
statusBarBrightness: brightness,
30-
statusBarIconBrightness: brightness,
31-
systemNavigationBarIconBrightness: brightness,
32-
systemNavigationBarColor: AppTheme.background,
33-
systemNavigationBarDividerColor: AppTheme.background2,
39+
statusBarBrightness: statusBarBrightness != null ? reverse : brightness,
40+
statusBarIconBrightness:
41+
statusBarBrightness != null ? reverse : brightness,
42+
systemNavigationBarIconBrightness: navBarBrightness ?? brightness,
43+
systemNavigationBarColor: systemNavigationBarColor,
44+
systemNavigationBarDividerColor: systemNavigationBarDividerColor,
3445
));
3546
}
3647
}

0 commit comments

Comments
 (0)