authsec_flutterNewUi/base_project/lib/widgets/custom_dropdown_field.dart
2025-03-21 09:10:43 +05:30

162 lines
3.8 KiB
Dart

import 'package:flutter/material.dart';
import '../utils/color_constants.dart';
import '../utils/size_utils.dart';
import 'custom_text_form_field.dart';
class CustomDropdownFormField extends StatelessWidget {
CustomDropdownFormField({super.key,
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);
}
}
}