getAppThemeData function
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],
);
}