AppFlowy/app_flowy/packages/flowy_infra/lib/theme.dart
2021-09-05 18:02:49 +08:00

182 lines
5.7 KiB
Dart

import 'package:flowy_infra/color.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
enum ThemeType {
light,
dark,
}
class AppTheme {
static ThemeType defaultTheme = ThemeType.light;
bool isDark;
late Color surface; //
late Color accent1;
late Color accent1Dark;
late Color accent1Darker;
late Color accent2;
late Color accent3;
late Color grey;
late Color greyStrong;
late Color greyWeak;
late Color error;
late Color focus;
late Color txt;
late Color accentTxt;
late Color hover;
late Color selector;
late Color red;
late Color yellow;
late Color green;
late Color shader1;
late Color shader2;
late Color shader3;
late Color shader4;
late Color shader5;
late Color shader6;
late Color shader7;
late Color bg1;
late Color bg2;
late Color bg3;
late Color bg4;
late Color tint1;
late Color tint2;
late Color tint3;
late Color tint4;
late Color tint5;
late Color tint6;
late Color tint7;
late Color tint8;
late Color tint9;
late Color main1;
late Color main2;
/// Default constructor
AppTheme({this.isDark = true}) {
txt = isDark ? Colors.white : Colors.black;
accentTxt = isDark ? Colors.black : Colors.white;
}
/// fromType factory constructor
factory AppTheme.fromType(ThemeType t) {
switch (t) {
case ThemeType.light:
return AppTheme(isDark: false)
..surface = Colors.white
..accent1 = const Color(0xff00a086)
..accent1Dark = const Color(0xff00856f)
..accent1Darker = const Color(0xff006b5a)
..accent2 = const Color(0xfff09433)
..accent3 = const Color(0xff5bc91a)
..greyWeak = const Color(0xff909f9c)
..grey = const Color(0xff515d5a)
..greyStrong = const Color(0xff151918)
..error = Colors.red.shade900
..focus = const Color(0xFFe0f8ff)
..hover = const Color(0xFFe0f8ff) //
..selector = const Color(0xfff2fcff)
..red = const Color(0xfffb006d)
..yellow = const Color(0xffffd667)
..green = const Color(0xff66cf80)
..shader1 = const Color(0xff333333)
..shader2 = const Color(0xff4f4f4f)
..shader3 = const Color(0xff828282)
..shader4 = const Color(0xffbdbdbd)
..shader5 = const Color(0xffe0e0e0)
..shader6 = const Color(0xfff2f2f2)
..shader7 = const Color(0xffffffff)
..bg1 = const Color(0xfff7f8fc)
..bg2 = const Color(0xffedeef2)
..bg3 = const Color(0xffe2e4eb)
..bg4 = const Color(0xff2c144b)
..tint1 = const Color(0xffe8e0ff)
..tint2 = const Color(0xffffe7fd)
..tint3 = const Color(0xffffe7ee)
..tint4 = const Color(0xffffefe3)
..tint5 = const Color(0xfffff2cd)
..tint6 = const Color(0xfff5ffdc)
..tint7 = const Color(0xffddffd6)
..tint8 = const Color(0xffdefff1)
..tint9 = const Color(0xffdefff1)
..main1 = const Color(0xff00bcf0)
..main2 = const Color(0xff00b7ea);
case ThemeType.dark:
return AppTheme(isDark: true)
..bg1 = const Color(0xff121212)
..bg2 = const Color(0xff2c2c2c)
..surface = const Color(0xff252525)
..accent1 = const Color(0xff00a086)
..accent1Dark = const Color(0xff00caa5)
..accent1Darker = const Color(0xff00caa5)
..accent2 = const Color(0xfff19e46)
..accent3 = const Color(0xff5BC91A)
..greyWeak = const Color(0xffa8b3b0)
..grey = const Color(0xffced4d3)
..greyStrong = const Color(0xffffffff)
..error = const Color(0xffe55642)
..focus = const Color(0xff0ee2b1)
..hover = const Color(0xFFe0f8ff) //
..selector = const Color(0xfff2fcff)
..red = const Color(0xfffb006d)
..yellow = const Color(0xffffd667)
..green = const Color(0xff66cf80)
..shader1 = const Color(0xff333333)
..shader2 = const Color(0xff4f4f4f)
..shader3 = const Color(0xff828282)
..shader4 = const Color(0xffbdbdbd)
..shader5 = const Color(0xffe0e0e0)
..shader6 = const Color(0xfff2f2f2)
..shader7 = const Color(0xffffffff)
..bg1 = const Color(0xfff7f8fc)
..bg2 = const Color(0xffedeef2)
..bg3 = const Color(0xffe2e4eb)
..bg4 = const Color(0xff2c144b)
..tint1 = const Color(0xffe8e0ff)
..tint2 = const Color(0xffffe7fd)
..tint3 = const Color(0xffffe7ee)
..tint4 = const Color(0xffffefe3)
..tint5 = const Color(0xfffff2cd)
..tint6 = const Color(0xfff5ffdc)
..tint7 = const Color(0xffddffd6)
..tint8 = const Color(0xffdefff1)
..tint9 = const Color(0xffdefff1)
..main1 = const Color(0xff00bcf0)
..main2 = const Color(0xff00b7ea);
}
}
ThemeData get themeData {
var t = ThemeData.from(
textTheme: (isDark ? ThemeData.dark() : ThemeData.light()).textTheme,
colorScheme: ColorScheme(
brightness: isDark ? Brightness.dark : Brightness.light,
primary: main1,
primaryVariant: main2,
secondary: bg1,
secondaryVariant: bg2,
background: bg1,
surface: surface,
onBackground: bg1,
onSurface: txt,
onError: red,
onPrimary: bg1,
onSecondary: bg1,
error: error),
);
return t.copyWith(
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
highlightColor: main1,
toggleableActiveColor: main1);
}
Color shift(Color c, double d) =>
ColorUtils.shiftHsl(c, d * (isDark ? -1 : 1));
}