darkThemeData static method

ThemeData darkThemeData({
  1. dynamic data,
  2. required bool isTablet,
})

Implementation

static ThemeData darkThemeData({dynamic data, required bool isTablet}) {
  double buttonSize = selectSize(isTablet, buttonLargeSize, buttonMediumSize);
  double checkboxSize = selectSize(isTablet, checkboxLargeSize, checkboxMediumSize);
  double radioSize = selectSize(isTablet, radioLargeSize, radioMediumSize);

  return ThemeData(
    appBarTheme: AppBarTheme(
      elevation: 0,
      backgroundColor: Colors.black,
      iconTheme: const IconThemeData(color: AppColors.primary),
      titleTextStyle: _appBarTextStyle(AppColors.primary),
    ),
    textTheme: _textTheme(isDark: true, isTablet: isTablet),
    iconTheme: const IconThemeData(color: AppColors.primary),
    buttonTheme: const ButtonThemeData(
      buttonColor: AppColors.primary,
      textTheme: ButtonTextTheme.primary,
      minWidth: buttonMediumSize,
      height: buttonMediumSize,
    ),
    checkboxTheme: CheckboxThemeData(
      fillColor: MaterialStateProperty.resolveWith((states) {
        if (states.contains(MaterialState.selected)) {
          return AppColors.primary;
        }
        return Colors.grey;
      }),
      checkColor: MaterialStateProperty.all(Colors.black),
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(checkboxMediumSize / 2),
      ),
    ),
    radioTheme: RadioThemeData(
      fillColor: MaterialStateProperty.resolveWith((states) {
        if (states.contains(MaterialState.selected)) {
          return AppColors.primary;
        }
        return Colors.grey;
      }),
      splashRadius: radioMediumSize / 2, // Ensure adequate splash radius for accessibility
    ),
    colorScheme: _colorScheme(data, Brightness.dark),
    bottomNavigationBarTheme: const BottomNavigationBarThemeData(
      backgroundColor: Colors.black,
      selectedItemColor: AppColors.primary,
      unselectedItemColor: Colors.grey,
    ),
    drawerTheme: const DrawerThemeData(
      backgroundColor: Colors.black,
    ),
    elevatedButtonTheme: ElevatedButtonThemeData(
      style: _elevatedButtonStyle(buttonSize, data, Brightness.dark),
    ),
  ).copyWith(
    elevatedButtonTheme: ElevatedButtonThemeData(style: _elevatedButtonStyle(buttonSize, data, Brightness.dark)),
    checkboxTheme: _checkboxTheme(checkboxSize, data),
    radioTheme: _radioTheme(radioSize, data),
  );
}