import 'package:flutter/material.dart';
import 'package:sk_base_mobile/util/screen_adaper_util.dart';

class AppTheme {
  AppTheme._();
  static const Color primaryColor = Color(0xFFC89607);
  static const Color primaryColorLight = Color.fromARGB(255, 255, 206, 70);
  static const Color primaryColorDark = Color.fromARGB(255, 163, 120, 0);

  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);

  static const Color white = Color(0xFFFFFFFF);
  static const Color nearlyWhite = Color(0xFFFEFEFE);
  static const Color black = Color(0xFF000000);
  static const Color nearlyBlack = Color(0xFF213333);
  static const Color grey = Color.fromARGB(255, 98, 101, 102);
  static const Color snackbarErrorBackgroudColor = Colors.red;
  static const Color snackbarSuccessBackgroudColor = Colors.green;
  static const Color snackbarWarningBackgroudColor = Colors.orange;
  static Color barrierColor = Colors.black.withOpacity(0.5);
  static const String fontName = 'NotoSans';
  static const Color activeNavigationBarColor = primaryColor;
  static const Color notActiveNavigationBarColor = Colors.grey;
  static const Color dividerColor = Color.fromARGB(255, 224, 224, 224);
}

final theme = ThemeData(
  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,
  }),
  primaryColorLight: AppTheme.primaryColorLight,
  fontFamily: AppTheme.fontName,
  textButtonTheme: TextButtonThemeData(
      style: ButtonStyle(
    foregroundColor:
        MaterialStateProperty.all<Color>(AppTheme.primaryColor), // 设置文本颜色为红色
  )),
  datePickerTheme: DatePickerThemeData(
    confirmButtonStyle: ButtonStyle(
      textStyle: MaterialStateProperty.resolveWith<TextStyle?>(
        (Set<MaterialState> states) {
          return TextStyle(color: AppTheme.primaryColor);
        },
      ),
    ),
    todayBorder: const BorderSide(color: AppTheme.primaryColor),
    todayBackgroundColor: MaterialStateProperty.resolveWith<Color?>(
      (Set<MaterialState> states) {
        if (states.contains(MaterialState.selected)) {
          return AppTheme.primaryColor;
        }
        return null;
      },
    ),
    // rangeSelectionBackgroundColor: AppTheme.primaryColor,
    dayBackgroundColor: MaterialStateProperty.resolveWith<Color?>(
      (Set<MaterialState> states) {
        if (states.contains(MaterialState.selected)) {
          return AppTheme.primaryColor;
        }
        return null;
      },
    ),
  ),
  visualDensity: VisualDensity.adaptivePlatformDensity,
  primaryColor: AppTheme.primaryColor,
  primaryColorDark: AppTheme.primaryColorDark,
  progressIndicatorTheme:
      const ProgressIndicatorThemeData(color: AppTheme.primaryColor),
  dividerColor: AppTheme.dividerColor,
  cardColor: AppTheme.white,
  scaffoldBackgroundColor: AppTheme.nearlyWhite,
  bottomNavigationBarTheme: BottomNavigationBarThemeData(
      backgroundColor: AppTheme.nearlyWhite,
      unselectedLabelStyle: TextStyle(fontSize: ScreenAdaper.sp(20)),
      selectedLabelStyle: TextStyle(fontSize: ScreenAdaper.sp(20)),
      selectedItemColor: AppTheme.primaryColor),
  tabBarTheme: const TabBarTheme(
      indicator: BoxDecoration(
    border:
        Border(bottom: BorderSide(width: 3, color: AppTheme.primaryColorDark)),
  )),
  appBarTheme: AppBarTheme(
    centerTitle: true,
    iconTheme: const IconThemeData(color: Colors.black),
    backgroundColor: AppTheme.primaryColor,
    titleTextStyle: TextStyle(
        color: Colors.black,
        fontSize: ScreenAdaper.sp(30),
        fontWeight: FontWeight.bold),
  ),
  inputDecorationTheme: InputDecorationTheme(
    floatingLabelStyle: TextStyle(
      color: AppTheme.primaryColor,
      fontSize: ScreenAdaper.sp(30),
    ),
    labelStyle: TextStyle(
      fontSize: ScreenAdaper.sp(25),
    ),
    border: OutlineInputBorder(
        borderRadius: BorderRadius.circular(ScreenAdaper.sp(15))),
    focusedBorder: OutlineInputBorder(
      borderRadius: BorderRadius.circular(ScreenAdaper.sp(15)),
      borderSide: const BorderSide(
          color: AppTheme.primaryColorLight, width: 2), // 选中时的边框颜色和宽度
    ),
  ),
);
