Adding base project of flutter-hybrid
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../custom_image_view.dart';
|
||||
|
||||
// ignore: must_be_immutable
|
||||
class AppbarImage extends StatelessWidget {
|
||||
AppbarImage(
|
||||
{required this.height,
|
||||
required this.width,
|
||||
this.imagePath,
|
||||
this.svgPath,
|
||||
this.margin,
|
||||
this.onTap});
|
||||
|
||||
double height;
|
||||
|
||||
double width;
|
||||
|
||||
String? imagePath;
|
||||
|
||||
String? svgPath;
|
||||
|
||||
EdgeInsetsGeometry? margin;
|
||||
|
||||
Function? onTap;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return InkWell(
|
||||
onTap: () {
|
||||
onTap?.call();
|
||||
},
|
||||
child: Padding(
|
||||
padding: margin ?? EdgeInsets.zero,
|
||||
child: CustomImageView(
|
||||
svgPath: svgPath,
|
||||
imagePath: imagePath,
|
||||
height: height,
|
||||
width: width,
|
||||
fit: BoxFit.contain,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../../Utils/color_constants.dart';
|
||||
import '../../theme/app_style.dart';
|
||||
|
||||
|
||||
// ignore: must_be_immutable
|
||||
class AppbarTitle extends StatelessWidget {
|
||||
AppbarTitle({required this.text, this.margin, this.onTap});
|
||||
|
||||
String text;
|
||||
|
||||
EdgeInsetsGeometry? margin;
|
||||
|
||||
Function? onTap;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return GestureDetector(
|
||||
onTap: () {
|
||||
onTap?.call();
|
||||
},
|
||||
child: Padding(
|
||||
padding: margin ?? EdgeInsets.zero,
|
||||
child: Text(
|
||||
text,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
textAlign: TextAlign.left,
|
||||
style: AppStyle.txtGilroySemiBold24.copyWith(
|
||||
color: ColorConstant.blueGray900,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../../Utils/size_utils.dart';
|
||||
|
||||
// ignore: must_be_immutable
|
||||
class CustomAppBar extends StatelessWidget implements PreferredSizeWidget{
|
||||
CustomAppBar(
|
||||
{required this.height,
|
||||
this.leadingWidth,
|
||||
this.leading,
|
||||
this.title,
|
||||
this.bottom,
|
||||
this.flexibleSpace,
|
||||
this.centerTitle,
|
||||
this.actions});
|
||||
|
||||
double height;
|
||||
|
||||
double? leadingWidth;
|
||||
|
||||
Widget? leading;
|
||||
|
||||
Widget? title;
|
||||
|
||||
PreferredSize? flexibleSpace;
|
||||
|
||||
TabBar? bottom;
|
||||
|
||||
bool? centerTitle;
|
||||
|
||||
List<Widget>? actions;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AppBar(
|
||||
elevation: 0,
|
||||
toolbarHeight: height,
|
||||
automaticallyImplyLeading: false,
|
||||
backgroundColor: Colors.transparent,
|
||||
leadingWidth: leadingWidth ?? 0,
|
||||
leading: leading,
|
||||
title: title,
|
||||
bottom: bottom,
|
||||
flexibleSpace: flexibleSpace,
|
||||
titleSpacing: 0,
|
||||
centerTitle: centerTitle ?? false,
|
||||
actions: actions,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Size get preferredSize => Size(
|
||||
size.width,
|
||||
height,
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import '../Utils/color_constants.dart';
|
||||
import '../Utils/image_constant.dart';
|
||||
import '../Utils/size_utils.dart';
|
||||
import 'custom_image_view.dart';
|
||||
|
||||
class CustomBottomBar extends StatefulWidget {
|
||||
CustomBottomBar({this.onChanged});
|
||||
|
||||
Function(BottomBarEnum)? onChanged;
|
||||
|
||||
@override
|
||||
_CustomBottomBarState createState() => _CustomBottomBarState();
|
||||
}
|
||||
|
||||
class _CustomBottomBarState extends State<CustomBottomBar> {
|
||||
int selectedIndex = 0;
|
||||
|
||||
List<BottomMenuModel> bottomMenuList = [
|
||||
BottomMenuModel(
|
||||
icon: ImageConstant.imgFire,
|
||||
type: BottomBarEnum.Fire,
|
||||
),
|
||||
BottomMenuModel(
|
||||
icon: ImageConstant.imgSearchWhiteA70020x20,
|
||||
type: BottomBarEnum.Searchwhitea70020x20,
|
||||
),
|
||||
BottomMenuModel(
|
||||
icon: ImageConstant.imgMenu,
|
||||
type: BottomBarEnum.Menu,
|
||||
),
|
||||
BottomMenuModel(
|
||||
icon: ImageConstant.imgOverflowmenuWhiteA700,
|
||||
type: BottomBarEnum.Overflowmenuwhitea700,
|
||||
)
|
||||
];
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
margin: getMargin(
|
||||
left: 16,
|
||||
right: 16,
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
color: ColorConstant.blueA700,
|
||||
borderRadius: BorderRadius.circular(
|
||||
getHorizontalSize(
|
||||
14,
|
||||
),
|
||||
),
|
||||
),
|
||||
child: BottomNavigationBar(
|
||||
backgroundColor: Colors.transparent,
|
||||
showSelectedLabels: false,
|
||||
showUnselectedLabels: false,
|
||||
elevation: 0,
|
||||
currentIndex: selectedIndex,
|
||||
type: BottomNavigationBarType.fixed,
|
||||
items: List.generate(bottomMenuList.length, (index) {
|
||||
return BottomNavigationBarItem(
|
||||
icon: CustomImageView(
|
||||
svgPath: bottomMenuList[index].icon,
|
||||
height: getSize(
|
||||
24,
|
||||
),
|
||||
width: getSize(
|
||||
24,
|
||||
),
|
||||
color: ColorConstant.whiteA700,
|
||||
),
|
||||
activeIcon: CustomImageView(
|
||||
svgPath: bottomMenuList[index].icon,
|
||||
height: getSize(
|
||||
24,
|
||||
),
|
||||
width: getSize(
|
||||
24,
|
||||
),
|
||||
color: ColorConstant.whiteA700,
|
||||
),
|
||||
label: '',
|
||||
);
|
||||
}),
|
||||
onTap: (index) {
|
||||
selectedIndex = index;
|
||||
widget.onChanged?.call(bottomMenuList[index].type);
|
||||
setState(() {});
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
enum BottomBarEnum {
|
||||
Fire,
|
||||
Searchwhitea70020x20,
|
||||
Menu,
|
||||
Overflowmenuwhitea700,
|
||||
}
|
||||
|
||||
class BottomMenuModel {
|
||||
BottomMenuModel({required this.icon, required this.type});
|
||||
|
||||
String icon;
|
||||
|
||||
BottomBarEnum type;
|
||||
}
|
||||
|
||||
class DefaultWidget extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
color: Colors.white,
|
||||
padding: EdgeInsets.all(10),
|
||||
child: Center(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Text(
|
||||
'Please replace the respective Widget here',
|
||||
style: TextStyle(
|
||||
fontSize: 18,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -0,0 +1,148 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import '../Utils/color_constants.dart';
|
||||
import '../Utils/size_utils.dart';
|
||||
|
||||
class CustomCheckbox extends StatelessWidget {
|
||||
CustomCheckbox(
|
||||
{this.fontStyle,
|
||||
this.alignment,
|
||||
this.isRightCheck = false,
|
||||
this.iconSize,
|
||||
this.value,
|
||||
this.onChange,
|
||||
this.text,
|
||||
this.width,
|
||||
this.margin});
|
||||
|
||||
CheckboxFontStyle? fontStyle;
|
||||
|
||||
Alignment? alignment;
|
||||
|
||||
bool? isRightCheck;
|
||||
|
||||
double? iconSize;
|
||||
|
||||
bool? value;
|
||||
|
||||
Function(bool)? onChange;
|
||||
|
||||
String? text;
|
||||
|
||||
double? width;
|
||||
|
||||
EdgeInsetsGeometry? margin;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return alignment != null
|
||||
? Align(
|
||||
alignment: alignment ?? Alignment.center,
|
||||
child: _buildCheckboxWidget(),
|
||||
)
|
||||
: _buildCheckboxWidget();
|
||||
}
|
||||
|
||||
_buildCheckboxWidget() {
|
||||
return InkWell(
|
||||
onTap: () {
|
||||
value = !(value!);
|
||||
onChange!(value!);
|
||||
},
|
||||
child: Container(
|
||||
width: width,
|
||||
margin: margin ?? EdgeInsets.zero,
|
||||
child: isRightCheck! ? getRightSideCheckbox() : getLeftSideCheckbox(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget getRightSideCheckbox() {
|
||||
return Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.only(
|
||||
right: 8,
|
||||
),
|
||||
child: getTextWidget(),
|
||||
),
|
||||
getCheckboxWidget(),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget getLeftSideCheckbox() {
|
||||
return Row(
|
||||
children: [
|
||||
getCheckboxWidget(),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(
|
||||
left: 8,
|
||||
),
|
||||
child: getTextWidget(),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget getTextWidget() {
|
||||
return Text(
|
||||
text ?? "",
|
||||
textAlign: TextAlign.center,
|
||||
style: _setFontStyle(),
|
||||
);
|
||||
}
|
||||
|
||||
Widget getCheckboxWidget() {
|
||||
return SizedBox(
|
||||
height: iconSize,
|
||||
width: iconSize,
|
||||
child: Checkbox(
|
||||
value: value ?? false,
|
||||
onChanged: (value) {
|
||||
onChange!(value!);
|
||||
},
|
||||
checkColor: ColorConstant.whiteA700,
|
||||
visualDensity: VisualDensity(
|
||||
vertical: -4,
|
||||
horizontal: -4,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
_setFontStyle() {
|
||||
switch (fontStyle) {
|
||||
case CheckboxFontStyle.GilroyMedium16:
|
||||
return TextStyle(
|
||||
color: ColorConstant.blueGray900,
|
||||
fontSize: getFontSize(
|
||||
16,
|
||||
),
|
||||
fontFamily: 'Gilroy',
|
||||
fontWeight: FontWeight.w500,
|
||||
);
|
||||
case CheckboxFontStyle.GilroyMedium14:
|
||||
return TextStyle(
|
||||
color: ColorConstant.blueGray300,
|
||||
fontSize: getFontSize(
|
||||
14,
|
||||
),
|
||||
fontFamily: 'Gilroy',
|
||||
fontWeight: FontWeight.w500,
|
||||
);
|
||||
default:
|
||||
return TextStyle(
|
||||
color: ColorConstant.blueGray400,
|
||||
fontSize: getFontSize(
|
||||
14,
|
||||
),
|
||||
fontFamily: 'Gilroy',
|
||||
fontWeight: FontWeight.w400,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum CheckboxFontStyle { GilroyRegular14, GilroyMedium16, GilroyMedium14 }
|
||||
@@ -0,0 +1,199 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import '../Utils/color_constants.dart';
|
||||
import '../Utils/image_constant.dart';
|
||||
import '../Utils/size_utils.dart';
|
||||
|
||||
class CustomDropDown extends StatelessWidget {
|
||||
CustomDropDown(
|
||||
{this.shape,
|
||||
this.padding,
|
||||
this.variant,
|
||||
this.fontStyle,
|
||||
this.alignment,
|
||||
this.width,
|
||||
this.margin,
|
||||
this.focusNode,
|
||||
this.icon,
|
||||
this.hintText,
|
||||
this.prefix,
|
||||
this.prefixConstraints,
|
||||
this.items,
|
||||
this.onChanged,
|
||||
this.validator});
|
||||
|
||||
DropDownShape? shape;
|
||||
|
||||
DropDownPadding? padding;
|
||||
|
||||
DropDownVariant? variant;
|
||||
|
||||
DropDownFontStyle? fontStyle;
|
||||
|
||||
Alignment? alignment;
|
||||
|
||||
double? width;
|
||||
|
||||
EdgeInsetsGeometry? margin;
|
||||
|
||||
FocusNode? focusNode;
|
||||
|
||||
Widget? icon;
|
||||
|
||||
String? hintText;
|
||||
|
||||
Widget? prefix;
|
||||
|
||||
BoxConstraints? prefixConstraints;
|
||||
|
||||
List<String>? items;
|
||||
|
||||
Function(String)? onChanged;
|
||||
|
||||
FormFieldValidator<String>? validator;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return alignment != null
|
||||
? Align(
|
||||
alignment: alignment ?? Alignment.center,
|
||||
child: _buildDropDownWidget(),
|
||||
)
|
||||
: _buildDropDownWidget();
|
||||
}
|
||||
|
||||
_buildDropDownWidget() {
|
||||
return Container(
|
||||
width: width ?? double.maxFinite,
|
||||
margin: margin,
|
||||
child: DropdownButtonFormField(
|
||||
focusNode: focusNode,
|
||||
icon: icon,
|
||||
style: _setFontStyle(),
|
||||
decoration: _buildDecoration(),
|
||||
items: items?.map<DropdownMenuItem<String>>((String value) {
|
||||
return DropdownMenuItem<String>(
|
||||
value: value,
|
||||
child: Text(
|
||||
value,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
),
|
||||
);
|
||||
}).toList(),
|
||||
onChanged: (value) {
|
||||
onChanged!(value.toString());
|
||||
},
|
||||
validator: validator,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
_buildDecoration() {
|
||||
return InputDecoration(
|
||||
hintText: hintText ?? "",
|
||||
hintStyle: _setFontStyle(),
|
||||
border: _setBorderStyle(),
|
||||
enabledBorder: _setBorderStyle(),
|
||||
focusedBorder: _setBorderStyle(),
|
||||
prefixIcon: prefix,
|
||||
prefixIconConstraints: prefixConstraints,
|
||||
fillColor: _setFillColor(),
|
||||
filled: _setFilled(),
|
||||
isDense: true,
|
||||
contentPadding: _setPadding(),
|
||||
);
|
||||
}
|
||||
|
||||
_setFontStyle() {
|
||||
switch (fontStyle) {
|
||||
case DropDownFontStyle.GilroyRegular16:
|
||||
return TextStyle(
|
||||
color: ColorConstant.blueGray200,
|
||||
fontSize: getFontSize(
|
||||
16,
|
||||
),
|
||||
fontFamily: 'Gilroy',
|
||||
fontWeight: FontWeight.w400,
|
||||
);
|
||||
default:
|
||||
return TextStyle(
|
||||
color: ColorConstant.blueGray900,
|
||||
fontSize: getFontSize(
|
||||
16,
|
||||
),
|
||||
fontFamily: 'Gilroy',
|
||||
fontWeight: FontWeight.w600,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
_setOutlineBorderRadius() {
|
||||
switch (shape) {
|
||||
default:
|
||||
return BorderRadius.circular(
|
||||
getHorizontalSize(
|
||||
6.00,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
_setBorderStyle() {
|
||||
switch (variant) {
|
||||
case DropDownVariant.None:
|
||||
return InputBorder.none;
|
||||
default:
|
||||
return OutlineInputBorder(
|
||||
borderRadius: _setOutlineBorderRadius(),
|
||||
borderSide: BorderSide(
|
||||
color: ColorConstant.blueGray100,
|
||||
width: 1,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
_setFillColor() {
|
||||
switch (variant) {
|
||||
default:
|
||||
return ColorConstant.whiteA700;
|
||||
}
|
||||
}
|
||||
|
||||
_setFilled() {
|
||||
switch (variant) {
|
||||
case DropDownVariant.None:
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
_setPadding() {
|
||||
switch (padding) {
|
||||
default:
|
||||
return getPadding(
|
||||
left: 10,
|
||||
top: 10,
|
||||
bottom: 10,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum DropDownShape {
|
||||
RoundedBorder6,
|
||||
}
|
||||
|
||||
enum DropDownPadding {
|
||||
PaddingT10,
|
||||
}
|
||||
|
||||
enum DropDownVariant {
|
||||
None,
|
||||
OutlineBluegray100,
|
||||
}
|
||||
|
||||
enum DropDownFontStyle {
|
||||
GilroySemiBold16,
|
||||
GilroyRegular16,
|
||||
}
|
||||
@@ -0,0 +1,162 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import '../Utils/color_constants.dart';
|
||||
import '../Utils/size_utils.dart';
|
||||
import 'custom_text_form_field.dart';
|
||||
|
||||
class CustomDropdownFormField extends StatelessWidget {
|
||||
CustomDropdownFormField({
|
||||
this.shape,
|
||||
this.padding,
|
||||
this.initialValue,
|
||||
this.variant,
|
||||
this.fontStyle,
|
||||
this.alignment,
|
||||
this.width,
|
||||
this.margin,
|
||||
this.items,
|
||||
this.value,
|
||||
this.hintText,
|
||||
this.onChanged,
|
||||
this.validator,
|
||||
this.onSaved,
|
||||
});
|
||||
|
||||
TextFormFieldShape? shape;
|
||||
|
||||
TextFormFieldPadding? padding;
|
||||
|
||||
String? initialValue;
|
||||
|
||||
TextFormFieldVariant? variant;
|
||||
|
||||
TextFormFieldFontStyle? fontStyle;
|
||||
|
||||
Alignment? alignment;
|
||||
|
||||
double? width;
|
||||
|
||||
EdgeInsetsGeometry? margin;
|
||||
|
||||
List<DropdownMenuItem<String>>? items;
|
||||
|
||||
String? value;
|
||||
|
||||
String? hintText;
|
||||
|
||||
void Function(String?)? onChanged;
|
||||
|
||||
FormFieldValidator<String>? validator;
|
||||
|
||||
void Function(String?)? onSaved;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return alignment != null
|
||||
? Align(
|
||||
alignment: alignment ?? Alignment.center,
|
||||
child: _buildDropdownFormFieldWidget(),
|
||||
)
|
||||
: _buildDropdownFormFieldWidget();
|
||||
}
|
||||
|
||||
_buildDropdownFormFieldWidget() {
|
||||
return Container(
|
||||
width: width ?? double.maxFinite,
|
||||
margin: margin,
|
||||
child: DropdownButtonFormField<String>(
|
||||
value: value,
|
||||
items: items,
|
||||
onChanged: onChanged,
|
||||
validator: validator,
|
||||
onSaved: onSaved,
|
||||
decoration: _buildDecoration(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
_buildDecoration() {
|
||||
return InputDecoration(
|
||||
hintText: hintText ?? "",
|
||||
hintStyle: _setFontStyle(),
|
||||
border: _setBorderStyle(),
|
||||
enabledBorder: _setBorderStyle(),
|
||||
focusedBorder: _setBorderStyle(),
|
||||
fillColor: _setFillColor(),
|
||||
filled: _setFilled(),
|
||||
isDense: true,
|
||||
contentPadding: _setPadding(),
|
||||
);
|
||||
}
|
||||
|
||||
_setFontStyle() {
|
||||
switch (fontStyle) {
|
||||
// Add cases for different font styles if needed
|
||||
default:
|
||||
return TextStyle(
|
||||
color: ColorConstant.blueGray200,
|
||||
fontSize: getFontSize(16),
|
||||
fontFamily: 'Gilroy',
|
||||
fontWeight: FontWeight.w500,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
_setOutlineBorderRadius() {
|
||||
switch (shape) {
|
||||
case TextFormFieldShape.CircleBorder16:
|
||||
return BorderRadius.circular(getHorizontalSize(16.00));
|
||||
default:
|
||||
return BorderRadius.circular(getHorizontalSize(6.00));
|
||||
}
|
||||
}
|
||||
|
||||
_setBorderStyle() {
|
||||
switch (variant) {
|
||||
case TextFormFieldVariant.FillBlue50:
|
||||
return OutlineInputBorder(
|
||||
borderRadius: _setOutlineBorderRadius(),
|
||||
borderSide: BorderSide.none,
|
||||
);
|
||||
// Add cases for different variants if needed
|
||||
default:
|
||||
return OutlineInputBorder(
|
||||
borderRadius: _setOutlineBorderRadius(),
|
||||
borderSide: BorderSide(
|
||||
color: ColorConstant.blueGray100,
|
||||
width: 1,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
_setFillColor() {
|
||||
switch (variant) {
|
||||
case TextFormFieldVariant.FillBlue50:
|
||||
return ColorConstant.blue50;
|
||||
// Add cases for different variants if needed
|
||||
default:
|
||||
return ColorConstant.whiteA700;
|
||||
}
|
||||
}
|
||||
|
||||
_setFilled() {
|
||||
switch (variant) {
|
||||
case TextFormFieldVariant.FillBlue50:
|
||||
return true;
|
||||
// Add cases for different variants if needed
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
_setPadding() {
|
||||
switch (padding) {
|
||||
case TextFormFieldPadding.PaddingAll11:
|
||||
return getPadding(all: 11);
|
||||
// Add cases for different paddings if needed
|
||||
default:
|
||||
return getPadding(all: 11);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import '../Utils/color_constants.dart';
|
||||
import '../Utils/size_utils.dart';
|
||||
|
||||
class CustomFloatingButton extends StatelessWidget {
|
||||
CustomFloatingButton(
|
||||
{this.shape,
|
||||
this.variant,
|
||||
this.alignment,
|
||||
this.margin,
|
||||
this.onTap,
|
||||
this.width,
|
||||
this.height,
|
||||
this.child});
|
||||
|
||||
FloatingButtonShape? shape;
|
||||
|
||||
FloatingButtonVariant? variant;
|
||||
|
||||
Alignment? alignment;
|
||||
|
||||
EdgeInsetsGeometry? margin;
|
||||
|
||||
VoidCallback? onTap;
|
||||
|
||||
double? width;
|
||||
|
||||
double? height;
|
||||
|
||||
Widget? child;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return alignment != null
|
||||
? Align(
|
||||
alignment: alignment ?? Alignment.center,
|
||||
child: _buildFabWidget(),
|
||||
)
|
||||
: _buildFabWidget();
|
||||
}
|
||||
|
||||
_buildFabWidget() {
|
||||
return Padding(
|
||||
padding: margin ?? EdgeInsets.zero,
|
||||
child: FloatingActionButton(
|
||||
backgroundColor: _setColor(),
|
||||
onPressed: onTap,
|
||||
child: Container(
|
||||
alignment: Alignment.center,
|
||||
width: getSize(width ?? 0),
|
||||
height: getSize(height ?? 0),
|
||||
decoration: _buildDecoration(),
|
||||
child: child,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
_buildDecoration() {
|
||||
return BoxDecoration(
|
||||
color: _setColor(),
|
||||
borderRadius: _setBorderRadius(),
|
||||
);
|
||||
}
|
||||
|
||||
_setColor() {
|
||||
switch (variant) {
|
||||
default:
|
||||
return ColorConstant.blueA700;
|
||||
}
|
||||
}
|
||||
|
||||
_setBorderRadius() {
|
||||
switch (shape) {
|
||||
default:
|
||||
return BorderRadius.circular(
|
||||
getHorizontalSize(
|
||||
6.00,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum FloatingButtonShape {
|
||||
RoundedBorder6,
|
||||
}
|
||||
|
||||
enum FloatingButtonVariant {
|
||||
FillBlueA700,
|
||||
}
|
||||
@@ -0,0 +1,260 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import '../Utils/color_constants.dart';
|
||||
import '../Utils/size_utils.dart';
|
||||
|
||||
class CustomIconButton extends StatelessWidget {
|
||||
CustomIconButton(
|
||||
{this.shape,
|
||||
this.padding,
|
||||
this.variant,
|
||||
this.alignment,
|
||||
this.margin,
|
||||
this.width,
|
||||
this.height,
|
||||
this.child,
|
||||
this.onTap});
|
||||
|
||||
IconButtonShape? shape;
|
||||
|
||||
IconButtonPadding? padding;
|
||||
|
||||
IconButtonVariant? variant;
|
||||
|
||||
Alignment? alignment;
|
||||
|
||||
EdgeInsetsGeometry? margin;
|
||||
|
||||
double? width;
|
||||
|
||||
double? height;
|
||||
|
||||
Widget? child;
|
||||
|
||||
VoidCallback? onTap;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return alignment != null
|
||||
? Align(
|
||||
alignment: alignment ?? Alignment.center,
|
||||
child: _buildIconButtonWidget(),
|
||||
)
|
||||
: _buildIconButtonWidget();
|
||||
}
|
||||
|
||||
_buildIconButtonWidget() {
|
||||
return Padding(
|
||||
padding: margin ?? EdgeInsets.zero,
|
||||
child: IconButton(
|
||||
visualDensity: VisualDensity(
|
||||
vertical: -4,
|
||||
horizontal: -4,
|
||||
),
|
||||
iconSize: getSize(height ?? 0),
|
||||
padding: EdgeInsets.all(0),
|
||||
icon: Container(
|
||||
alignment: Alignment.center,
|
||||
width: getSize(width ?? 0),
|
||||
height: getSize(height ?? 0),
|
||||
padding: _setPadding(),
|
||||
decoration: _buildDecoration(),
|
||||
child: child,
|
||||
),
|
||||
onPressed: onTap,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
_buildDecoration() {
|
||||
return BoxDecoration(
|
||||
color: _setColor(),
|
||||
border: _setBorder(),
|
||||
borderRadius: _setBorderRadius(),
|
||||
boxShadow: _setBoxShadow(),
|
||||
);
|
||||
}
|
||||
|
||||
_setPadding() {
|
||||
switch (padding) {
|
||||
case IconButtonPadding.PaddingAll4:
|
||||
return getPadding(
|
||||
all: 4,
|
||||
);
|
||||
case IconButtonPadding.PaddingAll16:
|
||||
return getPadding(
|
||||
all: 16,
|
||||
);
|
||||
case IconButtonPadding.PaddingAll8:
|
||||
return getPadding(
|
||||
all: 8,
|
||||
);
|
||||
default:
|
||||
return getPadding(
|
||||
all: 11,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
_setColor() {
|
||||
switch (variant) {
|
||||
case IconButtonVariant.FillBlueA700:
|
||||
return ColorConstant.blueA700;
|
||||
case IconButtonVariant.OutlineGray80049:
|
||||
return ColorConstant.whiteA700;
|
||||
case IconButtonVariant.FillGray300:
|
||||
return ColorConstant.gray300;
|
||||
case IconButtonVariant.FillGray100:
|
||||
return ColorConstant.gray100;
|
||||
case IconButtonVariant.FillBlack90001:
|
||||
return ColorConstant.black90001;
|
||||
case IconButtonVariant.OutlineBluegray400:
|
||||
return ColorConstant.whiteA700;
|
||||
case IconButtonVariant.FillBlueA200:
|
||||
return ColorConstant.blueA200;
|
||||
case IconButtonVariant.OutlineBlueA700:
|
||||
case IconButtonVariant.OutlineBlue50:
|
||||
return null;
|
||||
default:
|
||||
return ColorConstant.blue50;
|
||||
}
|
||||
}
|
||||
|
||||
_setBorder() {
|
||||
switch (variant) {
|
||||
case IconButtonVariant.OutlineBlueA700:
|
||||
return Border.all(
|
||||
color: ColorConstant.blueA700,
|
||||
width: getHorizontalSize(
|
||||
1.00,
|
||||
),
|
||||
);
|
||||
case IconButtonVariant.OutlineGray80049:
|
||||
return Border.all(
|
||||
color: ColorConstant.gray80049,
|
||||
width: getHorizontalSize(
|
||||
1.00,
|
||||
),
|
||||
);
|
||||
case IconButtonVariant.OutlineBlue50:
|
||||
return Border.all(
|
||||
color: ColorConstant.blue50,
|
||||
width: getHorizontalSize(
|
||||
1.00,
|
||||
),
|
||||
);
|
||||
case IconButtonVariant.OutlineBluegray400:
|
||||
return Border.all(
|
||||
color: ColorConstant.blueGray400,
|
||||
width: getHorizontalSize(
|
||||
1.00,
|
||||
),
|
||||
);
|
||||
case IconButtonVariant.FillBlue50:
|
||||
case IconButtonVariant.FillBlueA700:
|
||||
case IconButtonVariant.FillGray300:
|
||||
case IconButtonVariant.FillGray100:
|
||||
case IconButtonVariant.FillBlack90001:
|
||||
case IconButtonVariant.FillBlueA200:
|
||||
return null;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
_setBorderRadius() {
|
||||
switch (shape) {
|
||||
case IconButtonShape.CircleBorder15:
|
||||
return BorderRadius.circular(
|
||||
getHorizontalSize(
|
||||
15.00,
|
||||
),
|
||||
);
|
||||
case IconButtonShape.RoundedBorder26:
|
||||
return BorderRadius.circular(
|
||||
getHorizontalSize(
|
||||
26.00,
|
||||
),
|
||||
);
|
||||
case IconButtonShape.CircleBorder10:
|
||||
return BorderRadius.circular(
|
||||
getHorizontalSize(
|
||||
10.00,
|
||||
),
|
||||
);
|
||||
case IconButtonShape.CircleBorder30:
|
||||
return BorderRadius.circular(
|
||||
getHorizontalSize(
|
||||
30.00,
|
||||
),
|
||||
);
|
||||
default:
|
||||
return BorderRadius.circular(
|
||||
getHorizontalSize(
|
||||
6.00,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
_setBoxShadow() {
|
||||
switch (variant) {
|
||||
case IconButtonVariant.OutlineBlueA700:
|
||||
return [
|
||||
BoxShadow(
|
||||
color: ColorConstant.indigoA20033,
|
||||
spreadRadius: getHorizontalSize(
|
||||
2.00,
|
||||
),
|
||||
blurRadius: getHorizontalSize(
|
||||
2.00,
|
||||
),
|
||||
offset: Offset(
|
||||
0,
|
||||
4,
|
||||
),
|
||||
),
|
||||
];
|
||||
case IconButtonVariant.FillBlue50:
|
||||
case IconButtonVariant.FillBlueA700:
|
||||
case IconButtonVariant.OutlineGray80049:
|
||||
case IconButtonVariant.FillGray300:
|
||||
case IconButtonVariant.FillGray100:
|
||||
case IconButtonVariant.FillBlack90001:
|
||||
case IconButtonVariant.OutlineBlue50:
|
||||
case IconButtonVariant.OutlineBluegray400:
|
||||
case IconButtonVariant.FillBlueA200:
|
||||
return null;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum IconButtonShape {
|
||||
RoundedBorder6,
|
||||
CircleBorder15,
|
||||
RoundedBorder26,
|
||||
CircleBorder10,
|
||||
CircleBorder30,
|
||||
}
|
||||
|
||||
enum IconButtonPadding {
|
||||
PaddingAll4,
|
||||
PaddingAll16,
|
||||
PaddingAll8,
|
||||
PaddingAll11,
|
||||
}
|
||||
|
||||
enum IconButtonVariant {
|
||||
FillBlue50,
|
||||
FillBlueA700,
|
||||
OutlineBlueA700,
|
||||
OutlineGray80049,
|
||||
FillGray300,
|
||||
FillGray100,
|
||||
FillBlack90001,
|
||||
OutlineBlue50,
|
||||
OutlineBluegray400,
|
||||
FillBlueA200,
|
||||
}
|
||||
@@ -0,0 +1,154 @@
|
||||
// ignore_for_file: must_be_immutable
|
||||
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
|
||||
class CustomImageView extends StatelessWidget {
|
||||
///[url] is required parameter for fetching network image
|
||||
String? url;
|
||||
|
||||
///[imagePath] is required parameter for showing png,jpg,etc image
|
||||
String? imagePath;
|
||||
|
||||
///[svgPath] is required parameter for showing svg image
|
||||
String? svgPath;
|
||||
|
||||
///[file] is required parameter for fetching image file
|
||||
File? file;
|
||||
|
||||
double? height;
|
||||
double? width;
|
||||
Color? color;
|
||||
BoxFit? fit;
|
||||
final String placeHolder;
|
||||
Alignment? alignment;
|
||||
VoidCallback? onTap;
|
||||
EdgeInsetsGeometry? margin;
|
||||
BorderRadius? radius;
|
||||
BoxBorder? border;
|
||||
|
||||
///a [CustomImageView] it can be used for showing any type of images
|
||||
/// it will shows the placeholder image if image is not found on network image
|
||||
CustomImageView({
|
||||
Key? key,
|
||||
this.url,
|
||||
this.imagePath,
|
||||
this.svgPath,
|
||||
this.file,
|
||||
this.height,
|
||||
this.width,
|
||||
this.color,
|
||||
this.fit,
|
||||
this.alignment,
|
||||
this.onTap,
|
||||
this.radius,
|
||||
this.margin,
|
||||
this.border,
|
||||
this.placeHolder = 'assets/images/image_not_found.png',
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return alignment != null
|
||||
? Align(
|
||||
alignment: alignment!,
|
||||
child: _buildWidget(),
|
||||
)
|
||||
: _buildWidget();
|
||||
}
|
||||
|
||||
Widget _buildWidget() {
|
||||
return Padding(
|
||||
padding: margin ?? EdgeInsets.zero,
|
||||
child: InkWell(
|
||||
onTap: onTap,
|
||||
child: _buildCircleImage(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
///build the image with border radius
|
||||
_buildCircleImage() {
|
||||
if (radius != null) {
|
||||
return ClipRRect(
|
||||
borderRadius: radius ?? BorderRadius.zero,
|
||||
child: _buildImageWithBorder(),
|
||||
);
|
||||
} else {
|
||||
return _buildImageWithBorder();
|
||||
}
|
||||
}
|
||||
|
||||
///build the image with border and border radius style
|
||||
_buildImageWithBorder() {
|
||||
if (border != null) {
|
||||
return Container(
|
||||
decoration: BoxDecoration(
|
||||
border: border,
|
||||
borderRadius: radius,
|
||||
),
|
||||
child: _buildImageView(),
|
||||
);
|
||||
} else {
|
||||
return _buildImageView();
|
||||
}
|
||||
}
|
||||
|
||||
Widget _buildImageView() {
|
||||
if (svgPath != null && svgPath!.isNotEmpty) {
|
||||
return SizedBox(
|
||||
height: height,
|
||||
width: width,
|
||||
child: SvgPicture.asset(
|
||||
svgPath!,
|
||||
height: height,
|
||||
width: width,
|
||||
fit: fit ?? BoxFit.contain,
|
||||
color: color,
|
||||
),
|
||||
);
|
||||
} else if (file != null && file!.path.isNotEmpty) {
|
||||
return Image.file(
|
||||
file!,
|
||||
height: height,
|
||||
width: width,
|
||||
fit: fit ?? BoxFit.cover,
|
||||
color: color,
|
||||
);
|
||||
} else if (url != null && url!.isNotEmpty) {
|
||||
return CachedNetworkImage(
|
||||
height: height,
|
||||
width: width,
|
||||
fit: fit,
|
||||
imageUrl: url!,
|
||||
color: color,
|
||||
placeholder: (context, url) => SizedBox(
|
||||
height: 30,
|
||||
width: 30,
|
||||
child: LinearProgressIndicator(
|
||||
color: Colors.grey.shade200,
|
||||
backgroundColor: Colors.grey.shade100,
|
||||
),
|
||||
),
|
||||
errorWidget: (context, url, error) => Image.asset(
|
||||
placeHolder,
|
||||
height: height,
|
||||
width: width,
|
||||
fit: fit ?? BoxFit.cover,
|
||||
),
|
||||
);
|
||||
} else if (imagePath != null && imagePath!.isNotEmpty) {
|
||||
return Image.asset(
|
||||
imagePath!,
|
||||
height: height,
|
||||
width: width,
|
||||
fit: fit ?? BoxFit.cover,
|
||||
color: color,
|
||||
);
|
||||
}
|
||||
return const SizedBox();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,260 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../Utils/color_constants.dart';
|
||||
import '../Utils/size_utils.dart';
|
||||
|
||||
class CustomRadioButton extends StatelessWidget {
|
||||
CustomRadioButton(
|
||||
{this.shape,
|
||||
this.padding,
|
||||
this.variant,
|
||||
this.fontStyle,
|
||||
this.alignment,
|
||||
this.onChange,
|
||||
this.isRightCheck = false,
|
||||
this.iconSize,
|
||||
this.value,
|
||||
this.groupValue,
|
||||
this.text,
|
||||
this.width,
|
||||
this.margin});
|
||||
|
||||
RadioShape? shape;
|
||||
|
||||
RadioPadding? padding;
|
||||
|
||||
RadioVariant? variant;
|
||||
|
||||
RadioFontStyle? fontStyle;
|
||||
|
||||
Alignment? alignment;
|
||||
|
||||
Function(String)? onChange;
|
||||
|
||||
bool? isRightCheck;
|
||||
|
||||
double? iconSize;
|
||||
|
||||
String? value;
|
||||
|
||||
String? groupValue;
|
||||
|
||||
String? text;
|
||||
|
||||
double? width;
|
||||
|
||||
EdgeInsetsGeometry? margin;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return alignment != null
|
||||
? Align(
|
||||
alignment: alignment ?? Alignment.center,
|
||||
child: _buildRadioButtonWidget(),
|
||||
)
|
||||
: _buildRadioButtonWidget();
|
||||
}
|
||||
|
||||
_buildRadioButtonWidget() {
|
||||
return InkWell(
|
||||
onTap: () {
|
||||
onChange!(value!);
|
||||
},
|
||||
child: Container(
|
||||
width: width,
|
||||
margin: margin ?? EdgeInsets.zero,
|
||||
padding: _setPadding(),
|
||||
decoration: _buildDecoration(),
|
||||
child: isRightCheck! ? getRightSideRadio() : getLeftSideRadio(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
_buildDecoration() {
|
||||
return BoxDecoration(
|
||||
color: _setColor(),
|
||||
border: _setBorder(),
|
||||
borderRadius: _setBorderRadius(),
|
||||
);
|
||||
}
|
||||
|
||||
Widget getRightSideRadio() {
|
||||
return Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.only(
|
||||
right: 8,
|
||||
),
|
||||
child: getTextWidget(),
|
||||
),
|
||||
getRadioWidget(),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget getLeftSideRadio() {
|
||||
return Row(
|
||||
children: [
|
||||
getRadioWidget(),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(
|
||||
left: 8,
|
||||
),
|
||||
child: getTextWidget(),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget getTextWidget() {
|
||||
return Text(
|
||||
text ?? "",
|
||||
textAlign: TextAlign.center,
|
||||
style: _setFontStyle(),
|
||||
);
|
||||
}
|
||||
|
||||
Widget getRadioWidget() {
|
||||
return SizedBox(
|
||||
height: iconSize,
|
||||
width: iconSize,
|
||||
child: Radio<String>(
|
||||
value: value ?? "",
|
||||
groupValue: groupValue,
|
||||
activeColor: ColorConstant.whiteA700,
|
||||
onChanged: (value) {
|
||||
onChange!(value!);
|
||||
},
|
||||
visualDensity: VisualDensity(
|
||||
vertical: -4,
|
||||
horizontal: -4,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
_setFontStyle() {
|
||||
switch (fontStyle) {
|
||||
case RadioFontStyle.GilroyMedium16:
|
||||
return TextStyle(
|
||||
color: ColorConstant.blueA700,
|
||||
fontSize: getFontSize(
|
||||
16,
|
||||
),
|
||||
fontFamily: 'Gilroy',
|
||||
fontWeight: FontWeight.w500,
|
||||
);
|
||||
case RadioFontStyle.GilroyMedium18:
|
||||
return TextStyle(
|
||||
color: ColorConstant.blueGray300,
|
||||
fontSize: getFontSize(
|
||||
18,
|
||||
),
|
||||
fontFamily: 'Gilroy',
|
||||
fontWeight: FontWeight.w500,
|
||||
);
|
||||
case RadioFontStyle.GilroyRegular16:
|
||||
return TextStyle(
|
||||
color: ColorConstant.blueGray900,
|
||||
fontSize: getFontSize(
|
||||
16,
|
||||
),
|
||||
fontFamily: 'Gilroy',
|
||||
fontWeight: FontWeight.w400,
|
||||
);
|
||||
default:
|
||||
return TextStyle(
|
||||
color: ColorConstant.blueGray400,
|
||||
fontSize: getFontSize(
|
||||
16,
|
||||
),
|
||||
fontFamily: 'Gilroy',
|
||||
fontWeight: FontWeight.w500,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
_setPadding() {
|
||||
switch (padding) {
|
||||
case RadioPadding.PaddingAll11:
|
||||
return getPadding(
|
||||
all: 11,
|
||||
);
|
||||
case RadioPadding.PaddingT1:
|
||||
return getPadding(
|
||||
top: 1,
|
||||
bottom: 1,
|
||||
);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
_setColor() {
|
||||
switch (variant) {
|
||||
case RadioVariant.OutlineBluegray400:
|
||||
return ColorConstant.whiteA700;
|
||||
case RadioVariant.OutlineBlueA700:
|
||||
return ColorConstant.whiteA700;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
_setBorder() {
|
||||
switch (variant) {
|
||||
case RadioVariant.OutlineBluegray400:
|
||||
return Border.all(
|
||||
color: ColorConstant.blueGray400,
|
||||
width: getHorizontalSize(
|
||||
1.00,
|
||||
),
|
||||
);
|
||||
case RadioVariant.OutlineBlueA700:
|
||||
return Border.all(
|
||||
color: ColorConstant.blueA700,
|
||||
width: getHorizontalSize(
|
||||
1.00,
|
||||
),
|
||||
);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
_setBorderRadius() {
|
||||
switch (shape) {
|
||||
case RadioShape.RoundedBorder6:
|
||||
return BorderRadius.circular(
|
||||
getHorizontalSize(
|
||||
6.00,
|
||||
),
|
||||
);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum RadioShape {
|
||||
RoundedBorder6,
|
||||
}
|
||||
|
||||
enum RadioPadding {
|
||||
PaddingAll11,
|
||||
PaddingT1,
|
||||
}
|
||||
|
||||
enum RadioVariant {
|
||||
OutlineBluegray400,
|
||||
OutlineBlueA700,
|
||||
}
|
||||
|
||||
enum RadioFontStyle {
|
||||
GilroyMedium16Bluegray400,
|
||||
GilroyMedium16,
|
||||
GilroyMedium18,
|
||||
GilroyRegular16,
|
||||
}
|
||||
@@ -0,0 +1,203 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import '../Utils/color_constants.dart';
|
||||
import '../Utils/size_utils.dart';
|
||||
|
||||
class CustomSearchView extends StatelessWidget {
|
||||
CustomSearchView(
|
||||
{this.shape,
|
||||
this.padding,
|
||||
this.variant,
|
||||
this.fontStyle,
|
||||
this.alignment,
|
||||
this.width,
|
||||
this.margin,
|
||||
this.controller,
|
||||
this.focusNode,
|
||||
this.hintText,
|
||||
this.prefix,
|
||||
this.prefixConstraints,
|
||||
this.suffix,
|
||||
this.suffixConstraints});
|
||||
|
||||
SearchViewShape? shape;
|
||||
|
||||
SearchViewPadding? padding;
|
||||
|
||||
SearchViewVariant? variant;
|
||||
|
||||
SearchViewFontStyle? fontStyle;
|
||||
|
||||
Alignment? alignment;
|
||||
|
||||
double? width;
|
||||
|
||||
EdgeInsetsGeometry? margin;
|
||||
|
||||
TextEditingController? controller;
|
||||
|
||||
FocusNode? focusNode;
|
||||
|
||||
String? hintText;
|
||||
|
||||
Widget? prefix;
|
||||
|
||||
BoxConstraints? prefixConstraints;
|
||||
|
||||
Widget? suffix;
|
||||
|
||||
BoxConstraints? suffixConstraints;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return alignment != null
|
||||
? Align(
|
||||
alignment: alignment ?? Alignment.center,
|
||||
child: _buildSearchViewWidget(),
|
||||
)
|
||||
: _buildSearchViewWidget();
|
||||
}
|
||||
|
||||
_buildSearchViewWidget() {
|
||||
return Container(
|
||||
width: width ?? double.maxFinite,
|
||||
margin: margin,
|
||||
child: TextFormField(
|
||||
controller: controller,
|
||||
focusNode: focusNode,
|
||||
style: _setFontStyle(),
|
||||
decoration: _buildDecoration(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
_buildDecoration() {
|
||||
return InputDecoration(
|
||||
hintText: hintText ?? "",
|
||||
hintStyle: _setFontStyle(),
|
||||
border: _setBorderStyle(),
|
||||
enabledBorder: _setBorderStyle(),
|
||||
focusedBorder: _setBorderStyle(),
|
||||
disabledBorder: _setBorderStyle(),
|
||||
prefixIcon: prefix,
|
||||
prefixIconConstraints: prefixConstraints,
|
||||
suffixIcon: suffix,
|
||||
suffixIconConstraints: suffixConstraints,
|
||||
fillColor: _setFillColor(),
|
||||
filled: _setFilled(),
|
||||
isDense: true,
|
||||
contentPadding: _setPadding(),
|
||||
);
|
||||
}
|
||||
|
||||
_setFontStyle() {
|
||||
switch (fontStyle) {
|
||||
case SearchViewFontStyle.GilroyMedium16Bluegray400:
|
||||
return TextStyle(
|
||||
color: ColorConstant.blueGray400,
|
||||
fontSize: getFontSize(
|
||||
16,
|
||||
),
|
||||
fontFamily: 'Gilroy',
|
||||
fontWeight: FontWeight.w500,
|
||||
);
|
||||
default:
|
||||
return TextStyle(
|
||||
color: ColorConstant.blueGray200,
|
||||
fontSize: getFontSize(
|
||||
16,
|
||||
),
|
||||
fontFamily: 'Gilroy',
|
||||
fontWeight: FontWeight.w500,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
_setOutlineBorderRadius() {
|
||||
switch (shape) {
|
||||
default:
|
||||
return BorderRadius.circular(
|
||||
getHorizontalSize(
|
||||
6.00,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
_setBorderStyle() {
|
||||
switch (variant) {
|
||||
case SearchViewVariant.OutlineBluegray200:
|
||||
return OutlineInputBorder(
|
||||
borderRadius: _setOutlineBorderRadius(),
|
||||
borderSide: BorderSide(
|
||||
color: ColorConstant.blueGray200,
|
||||
width: 1,
|
||||
),
|
||||
);
|
||||
case SearchViewVariant.None:
|
||||
return InputBorder.none;
|
||||
default:
|
||||
return OutlineInputBorder(
|
||||
borderRadius: _setOutlineBorderRadius(),
|
||||
borderSide: BorderSide(
|
||||
color: ColorConstant.blueGray100,
|
||||
width: 1,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
_setFillColor() {
|
||||
switch (variant) {
|
||||
case SearchViewVariant.OutlineBluegray200:
|
||||
return ColorConstant.whiteA700;
|
||||
default:
|
||||
return ColorConstant.whiteA700;
|
||||
}
|
||||
}
|
||||
|
||||
_setFilled() {
|
||||
switch (variant) {
|
||||
case SearchViewVariant.None:
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
_setPadding() {
|
||||
switch (padding) {
|
||||
case SearchViewPadding.PaddingT11:
|
||||
return getPadding(
|
||||
top: 11,
|
||||
right: 11,
|
||||
bottom: 11,
|
||||
);
|
||||
default:
|
||||
return getPadding(
|
||||
top: 12,
|
||||
bottom: 12,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum SearchViewShape {
|
||||
RoundedBorder6,
|
||||
}
|
||||
|
||||
enum SearchViewPadding {
|
||||
PaddingT11,
|
||||
PaddingT12,
|
||||
}
|
||||
|
||||
enum SearchViewVariant {
|
||||
None,
|
||||
OutlineBluegray100,
|
||||
OutlineBluegray200,
|
||||
}
|
||||
|
||||
enum SearchViewFontStyle {
|
||||
GilroyMedium16,
|
||||
GilroyMedium16Bluegray400,
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_switch/flutter_switch.dart';
|
||||
import '../Utils/color_constants.dart';
|
||||
import '../Utils/size_utils.dart';
|
||||
|
||||
class CustomSwitch extends StatelessWidget {
|
||||
CustomSwitch({this.alignment, this.margin, this.value, this.onChanged});
|
||||
|
||||
Alignment? alignment;
|
||||
|
||||
EdgeInsetsGeometry? margin;
|
||||
|
||||
bool? value;
|
||||
|
||||
Function(bool)? onChanged;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return alignment != null
|
||||
? Align(
|
||||
alignment: alignment ?? Alignment.center,
|
||||
child: _buildSwitchWidget(),
|
||||
)
|
||||
: _buildSwitchWidget();
|
||||
}
|
||||
|
||||
_buildSwitchWidget() {
|
||||
return Padding(
|
||||
padding: margin ?? EdgeInsets.zero,
|
||||
child: FlutterSwitch(
|
||||
value: value ?? false,
|
||||
height: getHorizontalSize(25),
|
||||
width: getHorizontalSize(45),
|
||||
toggleSize: 25,
|
||||
borderRadius: getHorizontalSize(
|
||||
12.00,
|
||||
),
|
||||
activeColor: ColorConstant.blueA700,
|
||||
activeToggleColor: ColorConstant.gray50,
|
||||
inactiveColor: ColorConstant.blueGray50,
|
||||
inactiveToggleColor: ColorConstant.gray50,
|
||||
onToggle: (value) {
|
||||
onChanged!(value);
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,220 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import '../Utils/color_constants.dart';
|
||||
import '../Utils/image_constant.dart';
|
||||
import '../Utils/size_utils.dart';
|
||||
|
||||
class CustomTextFormField extends StatelessWidget {
|
||||
TextFormFieldShape? shape;
|
||||
TextFormFieldPadding? padding;
|
||||
void Function(String?)? onsaved;
|
||||
void Function(String)? onChanged;
|
||||
void Function()? onTap;
|
||||
String? initialValue;
|
||||
bool? readOnly;
|
||||
List<TextInputFormatter>? inputFormatters;
|
||||
TextFormFieldVariant? variant;
|
||||
TextFormFieldFontStyle? fontStyle;
|
||||
Alignment? alignment;
|
||||
double? width;
|
||||
EdgeInsetsGeometry? margin;
|
||||
TextEditingController? controller;
|
||||
FocusNode? focusNode;
|
||||
String? errorText;
|
||||
bool? isObscureText;
|
||||
TextInputAction? textInputAction;
|
||||
TextInputType? textInputType;
|
||||
int? maxLines;
|
||||
int? maxLength; // Added this line
|
||||
String? hintText;
|
||||
Widget? prefix;
|
||||
BoxConstraints? prefixConstraints;
|
||||
Widget? suffix;
|
||||
BoxConstraints? suffixConstraints;
|
||||
FormFieldValidator<String>? validator;
|
||||
TextInputType? keyboardType; // Add this line
|
||||
|
||||
CustomTextFormField({
|
||||
this.shape,
|
||||
this.padding,
|
||||
this.initialValue,
|
||||
this.variant,
|
||||
this.fontStyle,
|
||||
this.readOnly,
|
||||
this.alignment,
|
||||
this.onChanged,
|
||||
this.onTap,
|
||||
this.width,
|
||||
this.margin,
|
||||
this.controller,
|
||||
this.inputFormatters,
|
||||
this.focusNode,
|
||||
this.isObscureText = false,
|
||||
this.textInputAction = TextInputAction.next,
|
||||
this.textInputType,
|
||||
this.maxLines,
|
||||
this.maxLength, // Added this line
|
||||
this.hintText,
|
||||
this.prefix,
|
||||
this.errorText,
|
||||
this.onsaved,
|
||||
this.prefixConstraints,
|
||||
this.suffix,
|
||||
this.suffixConstraints,
|
||||
this.validator,
|
||||
this.keyboardType, // Add this line
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return alignment != null
|
||||
? Align(
|
||||
alignment: alignment ?? Alignment.center,
|
||||
child: _buildTextFormFieldWidget(),
|
||||
)
|
||||
: _buildTextFormFieldWidget();
|
||||
}
|
||||
|
||||
_buildTextFormFieldWidget() {
|
||||
return Container(
|
||||
width: width ?? double.maxFinite,
|
||||
margin: margin,
|
||||
child: TextFormField(
|
||||
readOnly: readOnly ?? false,
|
||||
onSaved: onsaved,
|
||||
onChanged: onChanged,
|
||||
controller: controller,
|
||||
onTap: onTap,
|
||||
focusNode: focusNode,
|
||||
style: _setFontStyle(),
|
||||
obscureText: isObscureText!,
|
||||
textInputAction: textInputAction,
|
||||
keyboardType: textInputType,
|
||||
maxLines: maxLines ?? 1,
|
||||
maxLength: maxLength, // Added this line
|
||||
decoration: _buildDecoration(),
|
||||
validator: validator,
|
||||
initialValue: initialValue,
|
||||
inputFormatters: inputFormatters,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
_buildDecoration() {
|
||||
return InputDecoration(
|
||||
hintText: hintText ?? "",
|
||||
hintStyle: _setFontStyle(),
|
||||
border: _setBorderStyle(),
|
||||
enabledBorder: _setBorderStyle(),
|
||||
focusedBorder: _setBorderStyle(),
|
||||
disabledBorder: _setBorderStyle(),
|
||||
prefixIcon: prefix,
|
||||
errorText: errorText,
|
||||
prefixIconConstraints: prefixConstraints,
|
||||
suffixIcon: suffix,
|
||||
suffixIconConstraints: suffixConstraints,
|
||||
fillColor: _setFillColor(),
|
||||
filled: _setFilled(),
|
||||
isDense: true,
|
||||
contentPadding: _setPadding(),
|
||||
);
|
||||
}
|
||||
|
||||
_setFontStyle() {
|
||||
switch (fontStyle) {
|
||||
// Existing cases...
|
||||
case TextFormFieldFontStyle.RobotoMedium18:
|
||||
return TextStyle(
|
||||
color: ColorConstant.whiteA700,
|
||||
fontSize: getFontSize(18),
|
||||
fontFamily: 'Roboto',
|
||||
fontWeight: FontWeight.w500,
|
||||
);
|
||||
default:
|
||||
return TextStyle(
|
||||
color: ColorConstant.blueGray200,
|
||||
fontSize: getFontSize(16),
|
||||
fontFamily: 'Gilroy',
|
||||
fontWeight: FontWeight.w500,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
_setOutlineBorderRadius() {
|
||||
switch (shape) {
|
||||
// Existing cases...
|
||||
default:
|
||||
return BorderRadius.circular(getHorizontalSize(6.00));
|
||||
}
|
||||
}
|
||||
|
||||
_setBorderStyle() {
|
||||
switch (variant) {
|
||||
// Existing cases...
|
||||
default:
|
||||
return OutlineInputBorder(
|
||||
borderRadius: _setOutlineBorderRadius(),
|
||||
borderSide: BorderSide(
|
||||
color: ColorConstant.blueGray100,
|
||||
width: 1,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
_setFillColor() {
|
||||
switch (variant) {
|
||||
// Existing cases...
|
||||
default:
|
||||
return ColorConstant.whiteA700;
|
||||
}
|
||||
}
|
||||
|
||||
_setFilled() {
|
||||
switch (variant) {
|
||||
// Existing cases...
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
_setPadding() {
|
||||
switch (padding) {
|
||||
// Existing cases...
|
||||
default:
|
||||
return getPadding(all: 11);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum TextFormFieldShape {
|
||||
RoundedBorder6,
|
||||
CircleBorder16,
|
||||
}
|
||||
|
||||
enum TextFormFieldPadding {
|
||||
PaddingAll11,
|
||||
PaddingT12,
|
||||
PaddingT16,
|
||||
PaddingT20,
|
||||
PaddingAll8,
|
||||
PaddingT6,
|
||||
PaddingT25,
|
||||
}
|
||||
|
||||
enum TextFormFieldVariant {
|
||||
None,
|
||||
OutlineBluegray100,
|
||||
FillBlue50,
|
||||
OutlineBluegray400,
|
||||
OutlineBlack9003f,
|
||||
FillBlueA200,
|
||||
}
|
||||
|
||||
enum TextFormFieldFontStyle {
|
||||
GilroyMedium16,
|
||||
GilroyMedium16BlueA700,
|
||||
GilroyMedium16Bluegray400,
|
||||
GilroySemiBold14,
|
||||
RobotoMedium18,
|
||||
}
|
||||
Reference in New Issue
Block a user