theme.dart 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. import 'package:flowy_infra/color.dart';
  2. import 'package:flutter/material.dart';
  3. enum ThemeType {
  4. light,
  5. dark,
  6. }
  7. ThemeType themeTypeFromString(String name) {
  8. ThemeType themeType = ThemeType.light;
  9. if (name == "dark") {
  10. themeType = ThemeType.dark;
  11. }
  12. return themeType;
  13. }
  14. String themeTypeToString(ThemeType ty) {
  15. switch (ty) {
  16. case ThemeType.light:
  17. return "light";
  18. case ThemeType.dark:
  19. return "dark";
  20. }
  21. }
  22. //Color Pallettes
  23. const _black = Color(0xff000000);
  24. const _grey = Color(0xff808080);
  25. const _white = Color(0xFFFFFFFF);
  26. class AppTheme {
  27. ThemeType ty;
  28. bool isDark;
  29. late Color surface; //
  30. late Color hover;
  31. late Color selector;
  32. late Color red;
  33. late Color yellow;
  34. late Color green;
  35. late Color shader1;
  36. late Color shader2;
  37. late Color shader3;
  38. late Color shader4;
  39. late Color shader5;
  40. late Color shader6;
  41. late Color shader7;
  42. late Color bg1;
  43. late Color bg2;
  44. late Color bg3;
  45. late Color bg4;
  46. late Color tint1;
  47. late Color tint2;
  48. late Color tint3;
  49. late Color tint4;
  50. late Color tint5;
  51. late Color tint6;
  52. late Color tint7;
  53. late Color tint8;
  54. late Color tint9;
  55. late Color textColor;
  56. late Color iconColor;
  57. late Color disableIconColor;
  58. late Color main1;
  59. late Color main2;
  60. late Color shadowColor;
  61. /// Default constructor
  62. AppTheme({required this.ty, this.isDark = false});
  63. factory AppTheme.fromName({required String name}) {
  64. return AppTheme.fromType(themeTypeFromString(name));
  65. }
  66. /// fromType factory constructor
  67. factory AppTheme.fromType(ThemeType themeType) {
  68. switch (themeType) {
  69. case ThemeType.light:
  70. return AppTheme(ty: themeType, isDark: false)
  71. ..surface = Colors.white
  72. ..hover = const Color(0xFFe0f8ff) //
  73. ..selector = const Color(0xfff2fcff)
  74. ..red = const Color(0xfffb006d)
  75. ..yellow = const Color(0xffffd667)
  76. ..green = const Color(0xff66cf80)
  77. ..shader1 = const Color(0xff333333)
  78. ..shader2 = const Color(0xff4f4f4f)
  79. ..shader3 = const Color(0xff828282)
  80. ..shader4 = const Color(0xffbdbdbd)
  81. ..shader5 = const Color(0xffe0e0e0)
  82. ..shader6 = const Color(0xfff2f2f2)
  83. ..shader7 = const Color(0xffffffff)
  84. ..bg1 = const Color(0xfff7f8fc)
  85. ..bg2 = const Color(0xffedeef2)
  86. ..bg3 = const Color(0xffe2e4eb)
  87. ..bg4 = const Color(0xff2c144b)
  88. ..tint1 = const Color(0xffe8e0ff)
  89. ..tint2 = const Color(0xffffe7fd)
  90. ..tint3 = const Color(0xffffe7ee)
  91. ..tint4 = const Color(0xffffefe3)
  92. ..tint5 = const Color(0xfffff2cd)
  93. ..tint6 = const Color(0xfff5ffdc)
  94. ..tint7 = const Color(0xffddffd6)
  95. ..tint8 = const Color(0xffdefff1)
  96. ..tint9 = const Color(0xffdefff1)
  97. ..main1 = const Color(0xff00bcf0)
  98. ..main2 = const Color(0xff00b7ea)
  99. ..textColor = _black
  100. ..iconColor = _black
  101. ..shadowColor = _black
  102. ..disableIconColor = const Color(0xffbdbdbd);
  103. case ThemeType.dark:
  104. return AppTheme(ty: themeType, isDark: true)
  105. ..surface = const Color(0xff292929)
  106. ..hover = const Color(0xff1f1f1f)
  107. ..selector = const Color(0xff333333)
  108. ..red = const Color(0xfffb006d)
  109. ..yellow = const Color(0xffffd667)
  110. ..green = const Color(0xff66cf80)
  111. ..shader1 = _white
  112. ..shader2 = const Color(0xffffffff)
  113. ..shader3 = const Color(0xff828282)
  114. ..shader4 = const Color(0xffbdbdbd)
  115. ..shader5 = _white
  116. ..shader6 = _black
  117. ..shader7 = _black
  118. ..bg1 = _black
  119. ..bg2 = _black
  120. ..bg3 = const Color(0xff4f4f4f)
  121. ..bg4 = const Color(0xff2c144b)
  122. ..tint1 = const Color(0xffc3adff)
  123. ..tint2 = const Color(0xffffadf9)
  124. ..tint3 = const Color(0xffffadad)
  125. ..tint4 = const Color(0xffffcfad)
  126. ..tint5 = const Color(0xfffffead)
  127. ..tint6 = const Color(0xffe6ffa3)
  128. ..tint7 = const Color(0xffbcffad)
  129. ..tint8 = const Color(0xffadffe2)
  130. ..tint9 = const Color(0xffade4ff)
  131. ..main1 = const Color(0xff00bcf0)
  132. ..main2 = const Color(0xff009cc7)
  133. ..textColor = _white
  134. ..iconColor = _white
  135. ..shadowColor = _white
  136. ..disableIconColor = const Color(0xff333333);
  137. }
  138. }
  139. ThemeData get themeData {
  140. var t = ThemeData(
  141. textTheme: TextTheme(bodyText2: TextStyle(color: textColor)),
  142. textSelectionTheme: TextSelectionThemeData(cursorColor: main2, selectionHandleColor: main2),
  143. primaryIconTheme: IconThemeData(color: hover),
  144. iconTheme: IconThemeData(color: shader1),
  145. canvasColor: shader6,
  146. //Don't use this property because of the redo/undo button in the toolbar use the hoverColor.
  147. // hoverColor: main2,
  148. colorScheme: ColorScheme(
  149. brightness: isDark ? Brightness.dark : Brightness.light,
  150. primary: main1,
  151. primaryVariant: main2,
  152. secondary: main2,
  153. secondaryVariant: main2,
  154. background: surface,
  155. surface: surface,
  156. onBackground: surface,
  157. onSurface: surface,
  158. onError: red,
  159. onPrimary: bg1,
  160. onSecondary: bg1,
  161. error: red),
  162. );
  163. return t.copyWith(
  164. materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
  165. highlightColor: main1,
  166. indicatorColor: main1,
  167. toggleableActiveColor: main1);
  168. }
  169. Color shift(Color c, double d) => ColorUtils.shiftHsl(c, d * (isDark ? -1 : 1));
  170. }