app_theme.dart 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import 'package:flutter/material.dart';
  2. import 'package:tdesign_flutter/tdesign_flutter.dart';
  3. import 'app_colors.dart';
  4. class AppTheme {
  5. AppTheme._();
  6. static TDThemeData get tdThemeData {
  7. final base = TDThemeData.defaultData();
  8. return base.copyWithTDThemeData(
  9. 'tbossCustom',
  10. colorMap: <String, Color>{
  11. 'brandNormalColor': AppColors.primary,
  12. 'brandClickColor': const Color(0xFF0095D0),
  13. 'successNormalColor': AppColors.success,
  14. 'warningNormalColor': AppColors.warning,
  15. 'errorNormalColor': AppColors.error,
  16. 'textColorPrimary': AppColors.textPrimary,
  17. 'textColorSecondary': AppColors.textSecondary,
  18. },
  19. fontMap: <String, Font>{
  20. 'fontBodyMedium': Font(size: 14, lineHeight: 22),
  21. 'fontBodySmall': Font(size: 12, lineHeight: 20),
  22. },
  23. );
  24. }
  25. static ThemeData get light {
  26. final colorScheme = ColorScheme.fromSeed(
  27. seedColor: AppColors.primary,
  28. brightness: Brightness.light,
  29. );
  30. return ThemeData(
  31. useMaterial3: true,
  32. colorScheme: colorScheme,
  33. scaffoldBackgroundColor: AppColors.background,
  34. appBarTheme: const AppBarTheme(
  35. backgroundColor: AppColors.primary,
  36. foregroundColor: Colors.white,
  37. elevation: 0,
  38. centerTitle: false,
  39. titleTextStyle: TextStyle(
  40. fontSize: 18,
  41. fontWeight: FontWeight.w600,
  42. color: Colors.white,
  43. ),
  44. ),
  45. cardTheme: CardThemeData(
  46. color: AppColors.cardWhite,
  47. elevation: 1,
  48. shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
  49. ),
  50. elevatedButtonTheme: ElevatedButtonThemeData(
  51. style: ElevatedButton.styleFrom(
  52. backgroundColor: AppColors.primary,
  53. foregroundColor: Colors.white,
  54. shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
  55. minimumSize: const Size(double.infinity, 48),
  56. textStyle: const TextStyle(fontSize: 15, fontWeight: FontWeight.w600),
  57. ),
  58. ),
  59. outlinedButtonTheme: OutlinedButtonThemeData(
  60. style: OutlinedButton.styleFrom(
  61. foregroundColor: AppColors.textPrimary,
  62. shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
  63. minimumSize: const Size(double.infinity, 48),
  64. side: const BorderSide(color: Color(0xFFDDDDDD)),
  65. textStyle: const TextStyle(fontSize: 15),
  66. ),
  67. ),
  68. );
  69. }
  70. }