theme.dart 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import 'package:flutter/material.dart';
  2. import 'package:shared_preferences/shared_preferences.dart';
  3. class TupleTheme {
  4. String name;
  5. ThemeData theme;
  6. TupleTheme(String str, ThemeData theme) {
  7. name = str;
  8. this.theme = theme;
  9. }
  10. }
  11. // ignore: non_constant_identifier_names
  12. final List<TupleTheme> ThemeNames = [
  13. TupleTheme("CYBERPUNK", cyberpunkTheme),
  14. TupleTheme("Dark Green elephant", appThemeDarkGreen),
  15. TupleTheme("Dark Yellow boy", appThemeDarkYellow),
  16. TupleTheme("Dark Red Alert", appThemeDarkRed),
  17. TupleTheme("Dark Blue death screen", appThemeDarkBlue),
  18. TupleTheme("Dark Purple dracula", appThemeDarkPurple),
  19. TupleTheme("Light Linux Mint", appThemeLightGreen),
  20. TupleTheme("Light Yellow lemon", appThemeLightYellow),
  21. TupleTheme("Light Red dragon", appThemeLightRed),
  22. TupleTheme("Light deep Blue", appThemeLightBlue),
  23. TupleTheme("Light Purple Shadow", appThemeLightPurple),
  24. ];
  25. final TupleTheme defaultTheme =
  26. TupleTheme("Dark Green elephant", appThemeDarkGreen);
  27. Future<TupleTheme> getCurrentTheme() async {
  28. SharedPreferences prefs = await SharedPreferences.getInstance();
  29. String themeName = prefs.getString('theme');
  30. print(themeName);
  31. if (themeName == null)
  32. return defaultTheme;
  33. else
  34. for (var i = 0; i < ThemeNames.length; i++)
  35. if (ThemeNames[i].name == themeName) return ThemeNames[i];
  36. return defaultTheme;
  37. }
  38. ThemeData getThemeByName(String name) {
  39. for (var i = 0; i < ThemeNames.length; i++)
  40. if (ThemeNames[i].name == name) return ThemeNames[i].theme;
  41. return null;
  42. }
  43. // For dark
  44. Color background = Color.fromARGB(255, 40, 42, 54);
  45. Color foreground = Color.fromARGB(255, 248, 248, 242);
  46. ThemeData generateTheme(bool isDark, MaterialColor color) {
  47. if (isDark)
  48. return ThemeData.dark().copyWith(
  49. primaryColor: foreground,
  50. accentColor: color,
  51. floatingActionButtonTheme: FloatingActionButtonThemeData(
  52. backgroundColor: color,
  53. ),
  54. backgroundColor: background);
  55. else
  56. return ThemeData.light().copyWith(
  57. accentColor: color,
  58. floatingActionButtonTheme: FloatingActionButtonThemeData(
  59. backgroundColor: color,
  60. ),
  61. primaryColor: background,
  62. backgroundColor: foreground);
  63. }
  64. //
  65. final ThemeData cyberpunkTheme = ThemeData.light().copyWith(
  66. primaryColor: Color.fromARGB(255, 0, 22, 238),
  67. accentColor: Color.fromARGB(255, 254, 0, 254),
  68. //Color.fromARGB(255, 119, 0, 106),
  69. floatingActionButtonTheme: FloatingActionButtonThemeData(
  70. backgroundColor: Color.fromARGB(255, 254, 0, 254),
  71. foregroundColor: Colors.limeAccent, //Color.fromARGB(255, 0, 179, 254),
  72. ),
  73. backgroundColor: Colors.limeAccent,
  74. canvasColor: Colors.limeAccent,
  75. cardColor: Color.fromARGB(255, 255, 255, 0),
  76. //Color.fromARGB(255, 253,241,77),
  77. dialogBackgroundColor: Color.fromARGB(255, 255, 255, 0),
  78. //Color.fromARGB(255, 253,241,77),
  79. primaryColorLight: Color.fromARGB(255, 216, 188, 102),
  80. primaryColorDark: Color.fromARGB(255, 151, 141, 1),
  81. errorColor: Color.fromARGB(255, 227, 38, 54),
  82. );
  83. // Automatically generated boring themes
  84. final ThemeData appThemeLightGreen = generateTheme(false, Colors.green);
  85. final ThemeData appThemeLightYellow = generateTheme(false, Colors.yellow);
  86. final ThemeData appThemeLightRed = generateTheme(false, Colors.red);
  87. final ThemeData appThemeLightBlue = generateTheme(false, Colors.blue);
  88. final ThemeData appThemeLightPurple = generateTheme(false, Colors.deepPurple);
  89. final ThemeData appThemeDarkGreen = generateTheme(true, Colors.green);
  90. final ThemeData appThemeDarkYellow = generateTheme(true, Colors.yellow);
  91. final ThemeData appThemeDarkRed = generateTheme(true, Colors.red);
  92. final ThemeData appThemeDarkBlue = generateTheme(true, Colors.blue);
  93. final ThemeData appThemeDarkPurple = generateTheme(true, Colors.deepPurple);