createGBElevatedButtonTheme function

ElevatedButtonThemeData createGBElevatedButtonTheme({
  1. required Color accentColor,
  2. required Color backgroundDisabled,
  3. required Color textWhite,
  4. BorderRadiusGeometry? buttonsRadius,
  5. ElevatedButtonThemeData? customTheme,
})

Creates default ElevatedButtonThemeData for GB UI Kit buttons.

Implementation

ElevatedButtonThemeData createGBElevatedButtonTheme({
  required Color accentColor,
  required Color backgroundDisabled,
  required Color textWhite,
  BorderRadiusGeometry? buttonsRadius,
  ElevatedButtonThemeData? customTheme,
}) {
  final defaultStyle = ButtonStyle(
    padding: const WidgetStatePropertyAll<EdgeInsets>(EdgeInsets.all(14)),
    minimumSize: const WidgetStatePropertyAll<Size>(Size(18, 18)),
    backgroundColor: WidgetStateProperty.resolveWith<Color>((states) {
      if (states.contains(WidgetState.disabled)) {
        return backgroundDisabled;
      }
      return accentColor;
    }),
    foregroundColor: WidgetStateProperty.resolveWith<Color>((states) {
      if (states.contains(WidgetState.disabled)) {
        return textWhite.withValues(alpha: 0.6);
      }
      return textWhite;
    }),
    elevation: const WidgetStatePropertyAll(0),
    shape: WidgetStatePropertyAll(
      RoundedRectangleBorder(
        borderRadius: buttonsRadius ?? BorderRadius.zero,
      ),
    ),
  );
  return ElevatedButtonThemeData(
    style: defaultStyle.merge(customTheme?.style),
  );
}