Skip to content

Instantly share code, notes, and snippets.

@riscait
Created April 26, 2020 01:21
Show Gist options
  • Save riscait/b908f2d710e29a16aa4e1b446305b890 to your computer and use it in GitHub Desktop.
Save riscait/b908f2d710e29a16aa4e1b446305b890 to your computer and use it in GitHub Desktop.
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