test base project
This commit is contained in:
@@ -0,0 +1,352 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import '../Utils/color_constants.dart';
|
||||
import '../Utils/size_utils.dart';
|
||||
|
||||
class CustomButton extends StatelessWidget {
|
||||
CustomButton(
|
||||
{this.shape,
|
||||
this.padding,
|
||||
this.variant,
|
||||
this.fontStyle,
|
||||
this.alignment,
|
||||
this.margin,
|
||||
this.onTap,
|
||||
this.width,
|
||||
this.height,
|
||||
this.text,
|
||||
this.prefixWidget,
|
||||
this.suffixWidget});
|
||||
|
||||
ButtonShape? shape;
|
||||
|
||||
ButtonPadding? padding;
|
||||
|
||||
ButtonVariant? variant;
|
||||
|
||||
ButtonFontStyle? fontStyle;
|
||||
|
||||
Alignment? alignment;
|
||||
|
||||
EdgeInsetsGeometry? margin;
|
||||
|
||||
VoidCallback? onTap;
|
||||
|
||||
double? width;
|
||||
|
||||
double? height;
|
||||
|
||||
String? text;
|
||||
|
||||
Widget? prefixWidget;
|
||||
|
||||
Widget? suffixWidget;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return alignment != null
|
||||
? Align(
|
||||
alignment: alignment!,
|
||||
child: _buildButtonWidget(),
|
||||
)
|
||||
: _buildButtonWidget();
|
||||
}
|
||||
|
||||
_buildButtonWidget() {
|
||||
return Padding(
|
||||
padding: margin ?? EdgeInsets.zero,
|
||||
child: TextButton(
|
||||
onPressed: onTap,
|
||||
style: _buildTextButtonStyle(),
|
||||
child: _buildButtonWithOrWithoutIcon(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
_buildButtonWithOrWithoutIcon() {
|
||||
if (prefixWidget != null || suffixWidget != null) {
|
||||
return Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
prefixWidget ?? SizedBox(),
|
||||
Text(
|
||||
text ?? "",
|
||||
textAlign: TextAlign.center,
|
||||
style: _setFontStyle(),
|
||||
),
|
||||
suffixWidget ?? SizedBox(),
|
||||
],
|
||||
);
|
||||
} else {
|
||||
return Text(
|
||||
text ?? "",
|
||||
textAlign: TextAlign.center,
|
||||
style: _setFontStyle(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
_buildTextButtonStyle() {
|
||||
return TextButton.styleFrom(
|
||||
fixedSize: Size(
|
||||
width ?? double.maxFinite,
|
||||
height ?? getVerticalSize(40),
|
||||
),
|
||||
padding: _setPadding(),
|
||||
backgroundColor: _setColor(),
|
||||
side: _setTextButtonBorder(),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: _setBorderRadius(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
_setPadding() {
|
||||
switch (padding) {
|
||||
case ButtonPadding.PaddingT14:
|
||||
return getPadding(
|
||||
top: 14,
|
||||
right: 14,
|
||||
bottom: 14,
|
||||
);
|
||||
case ButtonPadding.PaddingT7:
|
||||
return getPadding(
|
||||
top: 7,
|
||||
right: 7,
|
||||
bottom: 7,
|
||||
);
|
||||
case ButtonPadding.PaddingAll7:
|
||||
return getPadding(
|
||||
all: 7,
|
||||
);
|
||||
case ButtonPadding.PaddingAll3:
|
||||
return getPadding(
|
||||
all: 3,
|
||||
);
|
||||
default:
|
||||
return getPadding(
|
||||
all: 14,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
_setColor() {
|
||||
switch (variant) {
|
||||
case ButtonVariant.FillBlue50:
|
||||
return ColorConstant.blue50;
|
||||
case ButtonVariant.FillDeeporangeA10033:
|
||||
return ColorConstant.deepOrangeA10033;
|
||||
case ButtonVariant.FillGray10001:
|
||||
return ColorConstant.gray10001;
|
||||
case ButtonVariant.FillLightblue100:
|
||||
return ColorConstant.lightBlue100;
|
||||
case ButtonVariant.FillRed200:
|
||||
return ColorConstant.red200;
|
||||
case ButtonVariant.FillGreenA100:
|
||||
return ColorConstant.greenA100;
|
||||
case ButtonVariant.FillBlueA200:
|
||||
return ColorConstant.blueA200;
|
||||
case ButtonVariant.FillBluegray50:
|
||||
return ColorConstant.blueGray50;
|
||||
case ButtonVariant.OutlineBlueA700:
|
||||
return null;
|
||||
default:
|
||||
return ColorConstant.blueA700;
|
||||
}
|
||||
}
|
||||
|
||||
_setTextButtonBorder() {
|
||||
switch (variant) {
|
||||
case ButtonVariant.OutlineBlueA700:
|
||||
return BorderSide(
|
||||
color: ColorConstant.blueA700,
|
||||
width: getHorizontalSize(
|
||||
1.00,
|
||||
),
|
||||
);
|
||||
case ButtonVariant.FillBlueA700:
|
||||
case ButtonVariant.FillBlue50:
|
||||
case ButtonVariant.FillDeeporangeA10033:
|
||||
case ButtonVariant.FillGray10001:
|
||||
case ButtonVariant.FillLightblue100:
|
||||
case ButtonVariant.FillRed200:
|
||||
case ButtonVariant.FillGreenA100:
|
||||
case ButtonVariant.FillBlueA200:
|
||||
case ButtonVariant.FillBluegray50:
|
||||
return null;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
_setBorderRadius() {
|
||||
switch (shape) {
|
||||
case ButtonShape.RoundedBorder2:
|
||||
return BorderRadius.circular(
|
||||
getHorizontalSize(
|
||||
2.00,
|
||||
),
|
||||
);
|
||||
case ButtonShape.RoundedBorder16:
|
||||
return BorderRadius.circular(
|
||||
getHorizontalSize(
|
||||
16.00,
|
||||
),
|
||||
);
|
||||
case ButtonShape.Square:
|
||||
return BorderRadius.circular(0);
|
||||
default:
|
||||
return BorderRadius.circular(
|
||||
getHorizontalSize(
|
||||
6.00,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
_setFontStyle() {
|
||||
switch (fontStyle) {
|
||||
case ButtonFontStyle.GilroyMedium14:
|
||||
return TextStyle(
|
||||
color: ColorConstant.blueA700,
|
||||
fontSize: getFontSize(
|
||||
14,
|
||||
),
|
||||
fontFamily: 'Gilroy',
|
||||
fontWeight: FontWeight.w500,
|
||||
);
|
||||
case ButtonFontStyle.GilroyMedium14WhiteA700:
|
||||
return TextStyle(
|
||||
color: ColorConstant.whiteA700,
|
||||
fontSize: getFontSize(
|
||||
14,
|
||||
),
|
||||
fontFamily: 'Gilroy',
|
||||
fontWeight: FontWeight.w500,
|
||||
);
|
||||
case ButtonFontStyle.GilroyMedium16Black900:
|
||||
return TextStyle(
|
||||
color: ColorConstant.black900,
|
||||
fontSize: getFontSize(
|
||||
16,
|
||||
),
|
||||
fontFamily: 'Gilroy',
|
||||
fontWeight: FontWeight.w500,
|
||||
);
|
||||
case ButtonFontStyle.SFUIDisplayBold12:
|
||||
return TextStyle(
|
||||
color: ColorConstant.whiteA700,
|
||||
fontSize: getFontSize(
|
||||
12,
|
||||
),
|
||||
fontFamily: 'SF UI Display',
|
||||
fontWeight: FontWeight.w700,
|
||||
);
|
||||
case ButtonFontStyle.GilroyMedium16BlueA700:
|
||||
return TextStyle(
|
||||
color: ColorConstant.blueA700,
|
||||
fontSize: getFontSize(
|
||||
16,
|
||||
),
|
||||
fontFamily: 'Gilroy',
|
||||
fontWeight: FontWeight.w500,
|
||||
);
|
||||
case ButtonFontStyle.GilroyMedium12:
|
||||
return TextStyle(
|
||||
color: ColorConstant.deepOrange400,
|
||||
fontSize: getFontSize(
|
||||
12,
|
||||
),
|
||||
fontFamily: 'Gilroy',
|
||||
fontWeight: FontWeight.w500,
|
||||
);
|
||||
case ButtonFontStyle.GilroyMedium12Red700:
|
||||
return TextStyle(
|
||||
color: ColorConstant.red700,
|
||||
fontSize: getFontSize(
|
||||
12,
|
||||
),
|
||||
fontFamily: 'Gilroy',
|
||||
fontWeight: FontWeight.w500,
|
||||
);
|
||||
case ButtonFontStyle.InterSemiBold10:
|
||||
return TextStyle(
|
||||
color: ColorConstant.black90001,
|
||||
fontSize: getFontSize(
|
||||
10,
|
||||
),
|
||||
fontFamily: 'Inter',
|
||||
fontWeight: FontWeight.w600,
|
||||
);
|
||||
case ButtonFontStyle.RobotoMedium14:
|
||||
return TextStyle(
|
||||
color: ColorConstant.whiteA700,
|
||||
fontSize: getFontSize(
|
||||
14,
|
||||
),
|
||||
fontFamily: 'Roboto',
|
||||
fontWeight: FontWeight.w500,
|
||||
);
|
||||
case ButtonFontStyle.InterRegular14:
|
||||
return TextStyle(
|
||||
color: ColorConstant.blueGray400,
|
||||
fontSize: getFontSize(
|
||||
14,
|
||||
),
|
||||
fontFamily: 'Inter',
|
||||
fontWeight: FontWeight.w400,
|
||||
);
|
||||
default:
|
||||
return TextStyle(
|
||||
color: ColorConstant.whiteA700,
|
||||
fontSize: getFontSize(
|
||||
16,
|
||||
),
|
||||
fontFamily: 'Gilroy',
|
||||
fontWeight: FontWeight.w500,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum ButtonShape {
|
||||
Square,
|
||||
RoundedBorder6,
|
||||
RoundedBorder2,
|
||||
RoundedBorder16,
|
||||
}
|
||||
|
||||
enum ButtonPadding {
|
||||
PaddingAll14,
|
||||
PaddingT14,
|
||||
PaddingT7,
|
||||
PaddingAll7,
|
||||
PaddingAll3,
|
||||
}
|
||||
|
||||
enum ButtonVariant {
|
||||
FillBlueA700,
|
||||
OutlineBlueA700,
|
||||
FillBlue50,
|
||||
FillDeeporangeA10033,
|
||||
FillGray10001,
|
||||
FillLightblue100,
|
||||
FillRed200,
|
||||
FillGreenA100,
|
||||
FillBlueA200,
|
||||
FillBluegray50,
|
||||
}
|
||||
|
||||
enum ButtonFontStyle {
|
||||
GilroyMedium16,
|
||||
GilroyMedium14,
|
||||
GilroyMedium14WhiteA700,
|
||||
GilroyMedium16Black900,
|
||||
SFUIDisplayBold12,
|
||||
GilroyMedium16BlueA700,
|
||||
GilroyMedium12,
|
||||
GilroyMedium12Red700,
|
||||
InterSemiBold10,
|
||||
RobotoMedium14,
|
||||
InterRegular14,
|
||||
}
|
||||
Reference in New Issue
Block a user