2024-03-18 13:23:58 +08:00
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:sk_base_mobile/util/screen_adaper_util.dart';
|
|
|
|
|
|
|
|
class AppTheme {
|
|
|
|
AppTheme._();
|
2024-03-18 15:54:06 +08:00
|
|
|
static const Color primaryColor = Color(0xFFC89607);
|
2024-03-19 11:09:07 +08:00
|
|
|
static const Color primaryColorLight = Color.fromARGB(255, 255, 206, 70);
|
2024-03-19 13:27:42 +08:00
|
|
|
static const Color primaryColorDark = Color.fromARGB(255, 163, 120, 0);
|
2024-04-01 11:38:10 +08:00
|
|
|
static const Color primaryTextColorWithBg = Color(0x00000000);
|
2024-03-19 13:27:42 +08:00
|
|
|
static const Color secondPrimaryColor = Color(0xFFc12a3a);
|
|
|
|
static const Color secondPrimaryColorLight = Color.fromARGB(255, 230, 79, 94);
|
|
|
|
static const Color secondPrimaryColorDark = Color.fromARGB(255, 141, 12, 25);
|
2024-04-01 11:38:10 +08:00
|
|
|
static const Color secondPrimaryTextColorWithBg = Color(0xFFFFFFFF);
|
2024-03-18 13:23:58 +08:00
|
|
|
static const Color white = Color(0xFFFFFFFF);
|
2024-03-18 15:54:06 +08:00
|
|
|
static const Color nearlyWhite = Color(0xFFFEFEFE);
|
|
|
|
static const Color black = Color(0xFF000000);
|
2024-03-18 13:23:58 +08:00
|
|
|
static const Color nearlyBlack = Color(0xFF213333);
|
2024-03-22 17:26:57 +08:00
|
|
|
static const Color grey = Color.fromARGB(255, 98, 101, 102);
|
2024-03-18 13:23:58 +08:00
|
|
|
static const Color snackbarErrorBackgroudColor = Colors.red;
|
|
|
|
static const Color snackbarSuccessBackgroudColor = Colors.green;
|
|
|
|
static const Color snackbarWarningBackgroudColor = Colors.orange;
|
2024-03-19 08:59:08 +08:00
|
|
|
static Color barrierColor = Colors.black.withOpacity(0.5);
|
2024-03-18 13:23:58 +08:00
|
|
|
static const String fontName = 'NotoSans';
|
2024-03-19 11:09:07 +08:00
|
|
|
static const Color activeNavigationBarColor = primaryColor;
|
|
|
|
static const Color notActiveNavigationBarColor = Colors.grey;
|
2024-04-01 11:38:10 +08:00
|
|
|
static const Color dangerColor = Colors.red;
|
2024-03-20 18:31:37 +08:00
|
|
|
static const Color dividerColor = Color.fromARGB(255, 224, 224, 224);
|
2024-03-18 13:23:58 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
final theme = ThemeData(
|
2024-03-20 18:31:37 +08:00
|
|
|
primarySwatch: MaterialColor(AppTheme.primaryColor.value, const {
|
|
|
|
50: AppTheme.primaryColorLight,
|
|
|
|
100: AppTheme.primaryColorLight,
|
|
|
|
200: AppTheme.primaryColorLight,
|
|
|
|
300: AppTheme.primaryColorLight,
|
|
|
|
400: AppTheme.primaryColorLight,
|
|
|
|
500: AppTheme.primaryColor,
|
|
|
|
600: AppTheme.primaryColorDark,
|
|
|
|
700: AppTheme.primaryColorDark,
|
|
|
|
800: AppTheme.primaryColorDark,
|
|
|
|
900: AppTheme.primaryColorDark,
|
|
|
|
}),
|
2024-03-21 14:09:49 +08:00
|
|
|
primaryColorLight: AppTheme.primaryColorLight,
|
2024-03-18 13:23:58 +08:00
|
|
|
fontFamily: AppTheme.fontName,
|
2024-03-21 14:09:49 +08:00
|
|
|
textButtonTheme: TextButtonThemeData(
|
|
|
|
style: ButtonStyle(
|
|
|
|
foregroundColor:
|
|
|
|
MaterialStateProperty.all<Color>(AppTheme.primaryColor), // 设置文本颜色为红色
|
|
|
|
)),
|
2024-04-02 12:24:08 +08:00
|
|
|
floatingActionButtonTheme: FloatingActionButtonThemeData(
|
|
|
|
backgroundColor: AppTheme.primaryColorLight,
|
|
|
|
),
|
2024-03-20 18:31:37 +08:00
|
|
|
datePickerTheme: DatePickerThemeData(
|
|
|
|
confirmButtonStyle: ButtonStyle(
|
|
|
|
textStyle: MaterialStateProperty.resolveWith<TextStyle?>(
|
|
|
|
(Set<MaterialState> states) {
|
2024-03-31 17:13:29 +08:00
|
|
|
return const TextStyle(color: AppTheme.primaryColor);
|
2024-03-20 18:31:37 +08:00
|
|
|
},
|
|
|
|
),
|
|
|
|
),
|
|
|
|
todayBorder: const BorderSide(color: AppTheme.primaryColor),
|
|
|
|
todayBackgroundColor: MaterialStateProperty.resolveWith<Color?>(
|
|
|
|
(Set<MaterialState> states) {
|
|
|
|
if (states.contains(MaterialState.selected)) {
|
|
|
|
return AppTheme.primaryColor;
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
},
|
|
|
|
),
|
2024-03-21 14:09:49 +08:00
|
|
|
// rangeSelectionBackgroundColor: AppTheme.primaryColor,
|
2024-03-20 18:31:37 +08:00
|
|
|
dayBackgroundColor: MaterialStateProperty.resolveWith<Color?>(
|
|
|
|
(Set<MaterialState> states) {
|
|
|
|
if (states.contains(MaterialState.selected)) {
|
|
|
|
return AppTheme.primaryColor;
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
},
|
|
|
|
),
|
|
|
|
),
|
2024-03-18 13:23:58 +08:00
|
|
|
visualDensity: VisualDensity.adaptivePlatformDensity,
|
|
|
|
primaryColor: AppTheme.primaryColor,
|
|
|
|
primaryColorDark: AppTheme.primaryColorDark,
|
|
|
|
progressIndicatorTheme:
|
2024-03-18 15:54:06 +08:00
|
|
|
const ProgressIndicatorThemeData(color: AppTheme.primaryColor),
|
2024-03-20 09:37:20 +08:00
|
|
|
dividerColor: AppTheme.dividerColor,
|
2024-03-18 15:54:06 +08:00
|
|
|
cardColor: AppTheme.white,
|
|
|
|
scaffoldBackgroundColor: AppTheme.nearlyWhite,
|
2024-03-19 08:59:08 +08:00
|
|
|
bottomNavigationBarTheme: BottomNavigationBarThemeData(
|
|
|
|
backgroundColor: AppTheme.nearlyWhite,
|
2024-03-28 17:18:46 +08:00
|
|
|
unselectedLabelStyle: TextStyle(fontSize: ScreenAdaper.height(20)),
|
|
|
|
selectedLabelStyle: TextStyle(fontSize: ScreenAdaper.height(20)),
|
2024-03-19 08:59:08 +08:00
|
|
|
selectedItemColor: AppTheme.primaryColor),
|
2024-03-20 18:31:37 +08:00
|
|
|
tabBarTheme: const TabBarTheme(
|
2024-03-18 13:23:58 +08:00
|
|
|
indicator: BoxDecoration(
|
|
|
|
border:
|
|
|
|
Border(bottom: BorderSide(width: 3, color: AppTheme.primaryColorDark)),
|
|
|
|
)),
|
2024-04-01 17:35:34 +08:00
|
|
|
textSelectionTheme: const TextSelectionThemeData(
|
|
|
|
selectionHandleColor: AppTheme.primaryColorLight,
|
|
|
|
cursorColor: AppTheme.primaryColorLight, // 这里是你想要的颜色
|
|
|
|
),
|
2024-03-18 13:23:58 +08:00
|
|
|
appBarTheme: AppBarTheme(
|
|
|
|
centerTitle: true,
|
2024-04-01 08:41:52 +08:00
|
|
|
iconTheme: const IconThemeData(color: Colors.white),
|
2024-03-18 13:23:58 +08:00
|
|
|
backgroundColor: AppTheme.primaryColor,
|
|
|
|
titleTextStyle: TextStyle(
|
2024-03-27 11:06:01 +08:00
|
|
|
color: Colors.white,
|
2024-03-28 17:18:46 +08:00
|
|
|
fontSize: ScreenAdaper.height(30),
|
2024-03-18 13:23:58 +08:00
|
|
|
fontWeight: FontWeight.bold),
|
|
|
|
),
|
2024-03-18 15:54:06 +08:00
|
|
|
inputDecorationTheme: InputDecorationTheme(
|
|
|
|
floatingLabelStyle: TextStyle(
|
|
|
|
color: AppTheme.primaryColor,
|
2024-03-28 17:18:46 +08:00
|
|
|
fontSize: ScreenAdaper.height(30),
|
2024-03-18 15:54:06 +08:00
|
|
|
),
|
|
|
|
labelStyle: TextStyle(
|
2024-03-28 17:18:46 +08:00
|
|
|
fontSize: ScreenAdaper.height(25),
|
2024-03-18 15:54:06 +08:00
|
|
|
),
|
|
|
|
border: OutlineInputBorder(
|
|
|
|
borderRadius: BorderRadius.circular(ScreenAdaper.sp(15))),
|
|
|
|
focusedBorder: OutlineInputBorder(
|
|
|
|
borderRadius: BorderRadius.circular(ScreenAdaper.sp(15)),
|
2024-03-20 18:31:37 +08:00
|
|
|
borderSide: const BorderSide(
|
2024-03-18 15:54:06 +08:00
|
|
|
color: AppTheme.primaryColorLight, width: 2), // 选中时的边框颜色和宽度
|
|
|
|
),
|
|
|
|
),
|
2024-03-18 13:23:58 +08:00
|
|
|
);
|