createGBOutlinedButtonTheme function

OutlinedButtonThemeData createGBOutlinedButtonTheme({
  1. required Color secondary,
  2. required Color textBlack,
  3. required Color textDisabled,
  4. required Color backgroundDisabled,
  5. BorderRadiusGeometry? borderRadius,
  6. OutlinedButtonThemeData? customTheme,
})

Creates default OutlinedButtonThemeData for GB UI Kit buttons.

Implementation

OutlinedButtonThemeData createGBOutlinedButtonTheme({
  required Color secondary,
  required Color textBlack,
  required Color textDisabled,
  required Color backgroundDisabled,
  BorderRadiusGeometry? borderRadius,
  OutlinedButtonThemeData? customTheme,
}) {
  final defaultStyle = ButtonStyle(
    minimumSize: const WidgetStatePropertyAll(Size(80, 48)),
    side: WidgetStateProperty.resolveWith<BorderSide>((states) {
      if (states.contains(WidgetState.disabled)) {
        return BorderSide(
          color: backgroundDisabled,
          style: BorderStyle.solid,
          width: 1.0,
        );
      }
      return BorderSide(
        color: secondary,
        style: BorderStyle.solid,
        width: 1.0,
      );
    }),
    foregroundColor: WidgetStateProperty.resolveWith<Color>((states) {
      if (states.contains(WidgetState.disabled)) {
        return textDisabled;
      }
      return textBlack;
    }),
    padding: const WidgetStatePropertyAll(EdgeInsets.all(14)),
    shape: WidgetStatePropertyAll(
      RoundedRectangleBorder(
        borderRadius: borderRadius ?? BorderRadius.zero,
      ),
    ),
  );
  return OutlinedButtonThemeData(
    style: defaultStyle.merge(customTheme?.style),
  );
}