theme.dart 4.8 KB

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