Created
April 26, 2020 01:21
-
-
Save riscait/b908f2d710e29a16aa4e1b446305b890 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'package:flutter/material.dart'; | |
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; | |
import 'theme_data.dart'; | |
// If you change the order, the order in which it is displayed also changes | |
enum ExThemeMode { | |
system, | |
light, | |
dark, | |
makoGreen, | |
darkGreen, | |
} | |
extension Extension on ExThemeMode { | |
/// No duplicate/unchanged numbers | |
int get id { | |
switch (this) { | |
case ExThemeMode.system: | |
return 1000; | |
case ExThemeMode.light: | |
return 1001; | |
case ExThemeMode.dark: | |
return 1002; | |
case ExThemeMode.darkGreen: | |
return 1003; | |
case ExThemeMode.makoGreen: | |
return 1004; | |
} | |
return 0; | |
} | |
/// Display names | |
String get name { | |
switch (this) { | |
case ExThemeMode.system: | |
return 'System'; | |
case ExThemeMode.light: | |
return 'Lignt'; | |
case ExThemeMode.dark: | |
return 'Dark'; | |
case ExThemeMode.darkGreen: | |
return 'Dark Green'; | |
case ExThemeMode.makoGreen: | |
return 'Mako'; | |
} | |
return null; | |
} | |
/// Display descriptions | |
String get description { | |
switch (this) { | |
case ExThemeMode.system: | |
return 'System setting'; | |
case ExThemeMode.light: | |
return 'Default light theme'; | |
case ExThemeMode.dark: | |
return 'Default dark theme'; | |
case ExThemeMode.darkGreen: | |
return 'Green dark theme'; | |
case ExThemeMode.makoGreen: | |
return 'Lifestream-inspired theme'; | |
} | |
return null; | |
} | |
/// Themes icon | |
IconData get icon { | |
switch (this) { | |
case ExThemeMode.system: | |
return Icons.settings; | |
case ExThemeMode.light: | |
return MdiIcons.weatherSunny; | |
case ExThemeMode.dark: | |
return MdiIcons.weatherNight; | |
case ExThemeMode.darkGreen: | |
return MdiIcons.tree; | |
case ExThemeMode.makoGreen: | |
return MdiIcons.sword; | |
} | |
return null; | |
} | |
/// Theme by ExThemeMode | |
ThemeData get themeData { | |
switch (this) { | |
case ExThemeMode.system: | |
return simpleLightTheme; | |
case ExThemeMode.light: | |
return simpleLightTheme; | |
case ExThemeMode.dark: | |
return simpleDarkTheme; | |
case ExThemeMode.darkGreen: | |
return darkGreenTheme; | |
case ExThemeMode.makoGreen: | |
return makoGreenTheme; | |
} | |
return null; | |
} | |
/// Theme by ExThemeMode for Dark mode | |
ThemeData get darkThemeData { | |
switch (this) { | |
case ExThemeMode.system: | |
return simpleDarkTheme; | |
default: | |
return null; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment