themes.dart 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import 'package:flutter/material.dart';
  2. class Themes {
  3. static Map<String, ThemeData> get values =>
  4. {'默认主题': defaultTheme, '蓝色主题': lightTheme, '夜间主题': darkTheme};
  5. static final ThemeData defaultTheme = ThemeData(
  6. primaryColor: const Color(0xFF038873),
  7. primaryColorLight: Colors.green,
  8. primaryColorDark: const Color(0xFF026F5C),
  9. indicatorColor: Colors.green,
  10. checkboxTheme: CheckboxThemeData(
  11. fillColor: MaterialStateProperty.resolveWith<Color?>(
  12. (Set<MaterialState> states) {
  13. if (states.contains(MaterialState.disabled)) {
  14. return null;
  15. }
  16. if (states.contains(MaterialState.selected)) {
  17. return const Color(0xFF038873);
  18. }
  19. return null;
  20. }),
  21. ),
  22. radioTheme: RadioThemeData(
  23. fillColor: MaterialStateProperty.resolveWith<Color?>(
  24. (Set<MaterialState> states) {
  25. if (states.contains(MaterialState.disabled)) {
  26. return null;
  27. }
  28. if (states.contains(MaterialState.selected)) {
  29. return const Color(0xFF038873);
  30. }
  31. return null;
  32. }),
  33. ),
  34. switchTheme: SwitchThemeData(
  35. thumbColor: MaterialStateProperty.resolveWith<Color?>(
  36. (Set<MaterialState> states) {
  37. if (states.contains(MaterialState.disabled)) {
  38. return null;
  39. }
  40. if (states.contains(MaterialState.selected)) {
  41. return const Color(0xFF038873);
  42. }
  43. return null;
  44. }),
  45. trackColor: MaterialStateProperty.resolveWith<Color?>(
  46. (Set<MaterialState> states) {
  47. if (states.contains(MaterialState.disabled)) {
  48. return null;
  49. }
  50. if (states.contains(MaterialState.selected)) {
  51. return const Color(0xFF038873);
  52. }
  53. return null;
  54. }),
  55. ),
  56. colorScheme: const ColorScheme(
  57. primary: Color(0xFF038873),
  58. secondary: Color(0xFF038873),
  59. surface: Colors.white,
  60. background: Colors.white,
  61. error: Color(0xffb00020),
  62. onPrimary: Colors.white,
  63. onSecondary: Colors.white,
  64. onSurface: Colors.black,
  65. onBackground: Colors.black,
  66. onError: Colors.white,
  67. brightness: Brightness.light,
  68. ).copyWith(error: const Color(0xffb00020)),
  69. );
  70. static final ThemeData lightTheme = ThemeData.light();
  71. static final ThemeData darkTheme =
  72. ThemeData.dark().copyWith(brightness: Brightness.dark);
  73. }