Skip to content

Commit a439521

Browse files
create ThemeEnum
1 parent 8c42c31 commit a439521

File tree

1 file changed

+143
-0
lines changed

1 file changed

+143
-0
lines changed
Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
import 'package:algorithm_visualizer/core/resources/color_manager.dart';
2+
import 'package:flutter/material.dart';
3+
4+
enum ThemeEnum {
5+
primaryColor,
6+
focusColor,
7+
hintColor,
8+
9+
whiteD1Color,
10+
whiteD2Color,
11+
whiteD3Color,
12+
whiteD4Color,
13+
whiteD5Color,
14+
whiteD7Color,
15+
whiteColor,
16+
transparentWhiteColor,
17+
transparentColor,
18+
blackColor,
19+
whiteOp60Color,
20+
solidWhiteOp60Color,
21+
whiteOp50Color,
22+
whiteOp20Color,
23+
greyColor,
24+
grey5Color,
25+
darkGreyColor,
26+
trendsRankingColor,
27+
hoverColor,
28+
blackOp80,
29+
blackOp50,
30+
blackOp20,
31+
blackOp10,
32+
bottomSheetColor,
33+
34+
blueColor,
35+
darkBlueColor,
36+
lightBlueColor,
37+
greenColor,
38+
redColor,
39+
orangeColor,
40+
}
41+
//
42+
// abstract class BaseGetColor extends Color {
43+
// const BaseGetColor(this.color, super.value);
44+
// final ThemeEnum color;
45+
//
46+
// getColor(BuildContext context) => context._getColor(color);
47+
// }
48+
49+
// class GetColor extends Color {
50+
// const GetColor(this.color)
51+
// : super(AppSettingsViewModel.getInstance().isThemeLight ? 0 : 1);
52+
// final ThemeEnum color;
53+
//
54+
// getColor(BuildContext context) => context._getColor(color);
55+
//
56+
// static Map<ThemeEnum, int> get _colors {
57+
// final isLight = AppSettingsViewModel.getInstance().isThemeLight;
58+
// return {
59+
// ThemeEnum.whiteD5Color:
60+
// isLight ? ColorManager.whiteD5 : ColorManager.blackL5,
61+
// ThemeEnum.whiteD7Color:
62+
// isLight ? ColorManager.whiteD7 : ColorManager.blackL6,
63+
// ThemeEnum.transparentColor: ColorManager.transparent,
64+
// ThemeEnum.transparentWhiteColor: ColorManager.whiteOp20,
65+
// ThemeEnum.blackOp20: ColorManager.blackOp20,
66+
// ThemeEnum.trendsRankingColor: ColorManager.rankingGrey,
67+
// ThemeEnum.whiteColor: ColorManager.white,
68+
// ThemeEnum.blackColor: ColorManager.black,
69+
// ThemeEnum.whiteOp60Color:
70+
// isLight ? ColorManager.whiteOp60 : ColorManager.blackOp60,
71+
// ThemeEnum.whiteOp50Color:
72+
// isLight ? ColorManager.whiteOp50 : ColorManager.blackOp50,
73+
// ThemeEnum.whiteOp20Color:
74+
// isLight ? ColorManager.whiteOp20 : ColorManager.blackOp20,
75+
// ThemeEnum.blackOp80: ColorManager.blackOp80,
76+
// ThemeEnum.blackOp50:
77+
// isLight ? ColorManager.blackOp50 : ColorManager.whiteOp50,
78+
// ThemeEnum.greyColor: ColorManager.grey,
79+
// ThemeEnum.grey5Color:
80+
// isLight ? ColorManager.greyD9 : ColorManager.whiteD4,
81+
// ThemeEnum.blueColor: ColorManager.blue,
82+
// ThemeEnum.darkBlueColor: ColorManager.darkBlue,
83+
// ThemeEnum.lightBlueColor: ColorManager.lightBlue,
84+
// ThemeEnum.greenColor: ColorManager.green,
85+
// ThemeEnum.redColor: ColorManager.red,
86+
// ThemeEnum.orangeColor: ColorManager.orange,
87+
// };
88+
// }
89+
// }
90+
91+
extension ThemeExtension on BuildContext {
92+
Map<ThemeEnum, Color> get _colors {
93+
// final isLight = AppSettingsViewModel.getInstance().isThemeLight;
94+
95+
return {
96+
ThemeEnum.primaryColor: Theme.of(this).primaryColor,
97+
ThemeEnum.focusColor: Theme.of(this).focusColor,
98+
ThemeEnum.hintColor: Theme.of(this).hintColor,
99+
100+
/// what ever dark or light. Maybe if we have multiple themes, it will save a lot of time.
101+
ThemeEnum.whiteD1Color: Theme.of(this).dialogBackgroundColor,
102+
ThemeEnum.whiteD2Color: Theme.of(this).primaryColorLight,
103+
ThemeEnum.bottomSheetColor:
104+
Theme.of(this).bottomSheetTheme.backgroundColor ??
105+
Theme.of(this).primaryColorLight,
106+
ThemeEnum.whiteD3Color:
107+
Theme.of(this).textTheme.headlineLarge?.color ?? ColorManager.grey,
108+
ThemeEnum.whiteD4Color: Theme.of(this).colorScheme.primaryContainer,
109+
ThemeEnum.whiteD5Color: ColorManager.whiteD5,
110+
ThemeEnum.whiteD7Color: ColorManager.whiteD7,
111+
ThemeEnum.transparentColor: ColorManager.transparent,
112+
ThemeEnum.transparentWhiteColor: ColorManager.whiteOp20,
113+
ThemeEnum.blackOp20: ColorManager.blackOp20,
114+
ThemeEnum.trendsRankingColor: ColorManager.rankingGrey,
115+
116+
ThemeEnum.blackOp10: Theme.of(this).dividerColor,
117+
118+
ThemeEnum.whiteColor: ColorManager.white,
119+
ThemeEnum.blackColor: ColorManager.black,
120+
ThemeEnum.whiteOp60Color: ColorManager.whiteOp60,
121+
ThemeEnum.solidWhiteOp60Color: ColorManager.whiteOp60,
122+
ThemeEnum.whiteOp50Color: ColorManager.whiteOp50,
123+
ThemeEnum.whiteOp20Color: ColorManager.whiteOp20,
124+
ThemeEnum.blackOp80: ColorManager.blackOp80,
125+
ThemeEnum.blackOp50: ColorManager.blackOp50,
126+
ThemeEnum.hoverColor: Theme.of(this).hoverColor,
127+
128+
ThemeEnum.greyColor: ColorManager.grey,
129+
ThemeEnum.grey5Color: ColorManager.greyD9,
130+
ThemeEnum.darkGreyColor:
131+
Theme.of(this).textTheme.bodyLarge?.color ?? ColorManager.greyD3,
132+
ThemeEnum.blueColor: ColorManager.blue,
133+
ThemeEnum.darkBlueColor: ColorManager.darkBlue,
134+
ThemeEnum.lightBlueColor: ColorManager.lightBlue,
135+
ThemeEnum.greenColor: ColorManager.green,
136+
ThemeEnum.redColor: ColorManager.red,
137+
ThemeEnum.orangeColor: ColorManager.orange,
138+
};
139+
}
140+
141+
Color getColor(ThemeEnum color) =>
142+
_colors[color] ?? Theme.of(this).primaryColor;
143+
}

0 commit comments

Comments
 (0)