getAppThemeData function

ThemeData getAppThemeData(
  1. BuildContext context,
  2. ThemeConfig themeConfig
)

Implementation

ThemeData getAppThemeData(BuildContext context, ThemeConfig themeConfig) {
  final textTheme = getTextThemeData(context);

  return ThemeData(
    colorScheme: themeConfig.colorScheme,
    primaryColor: themeConfig.colorScheme.primary,
    hintColor: themeConfig.colorScheme.onSurfaceVariant,
    highlightColor: themeConfig.colorScheme.primary.withValues(alpha: 0.1),
    appBarTheme: appBarTheme,
    sliderTheme: getSliderThemeData(context, themeConfig.colorScheme.primary),
    dividerColor: themeConfig.colorScheme.surfaceContainer,
    disabledColor: themeConfig.colorScheme.surfaceDim,
    elevatedButtonTheme: getElevatedButtonTheme(
      themeConfig.colorScheme.primary,
    ),
    datePickerTheme: DatePickerThemeData(
      backgroundColor: themeConfig.colorScheme.surfaceBright,
      dividerColor: themeConfig.colorScheme.outline,
    ),
    timePickerTheme: TimePickerThemeData(
      backgroundColor: themeConfig.colorScheme.surfaceBright,
    ),
    expansionTileTheme: getExpansionTileTheme(
      themeConfig.colorScheme.primary,
      themeConfig.colorScheme.onSurface,
    ),
    checkboxTheme: getCheckboxThemeData(themeConfig.colorScheme),
    fontFamily: 'OpenSans',
    scaffoldBackgroundColor: themeConfig.colorScheme.surface,
    useMaterial3: true,
    textTheme: textTheme,
    inputDecorationTheme: InputDecorationTheme(
      hintStyle: textTheme.bodyMedium?.copyWith(
        color: themeConfig.colorScheme.onSurfaceVariant,
      ),
      contentPadding: EdgeInsets.symmetric(
        horizontal: horizontalInputPadding,
        vertical: verticalInputPadding,
      ),
      outlineBorder: BorderSide(color: themeConfig.colorScheme.outline),
      border: OutlineInputBorder(
        borderRadius: BorderRadius.circular(inputRadius),
        borderSide: BorderSide(color: themeConfig.colorScheme.outline),
      ),
      enabledBorder: OutlineInputBorder(
        borderRadius: BorderRadius.circular(inputRadius),
        borderSide: BorderSide(color: themeConfig.colorScheme.outline),
      ),
      disabledBorder: OutlineInputBorder(
        borderRadius: BorderRadius.circular(inputRadius),
        borderSide: BorderSide(color: themeConfig.colorScheme.outline),
      ),
      focusedBorder: OutlineInputBorder(
        borderRadius: BorderRadius.circular(inputRadius),
        borderSide: BorderSide(color: themeConfig.colorScheme.primary),
      ),
      errorBorder: OutlineInputBorder(
        borderRadius: BorderRadius.circular(inputRadius),
        borderSide: BorderSide(color: themeConfig.colorScheme.error),
      ),
      focusedErrorBorder: OutlineInputBorder(
        borderRadius: BorderRadius.circular(inputRadius),
        borderSide: BorderSide(color: themeConfig.colorScheme.error, width: 2),
      ),
      errorStyle: textTheme.labelSmall?.copyWith(
        color: themeConfig.colorScheme.error,
        fontWeight: FontWeight.w600,
      ),
      isDense: true,
      isCollapsed: true,
    ),
    extensions: <ThemeExtension<dynamic>>[themeConfig.s360fColors],
  );
}