import 'package:flutter/material.dart'; import 'package:michele_s_application8/core/app_export.dart'; class CustomTextFormField extends StatelessWidget { CustomTextFormField( {this.shape, this.padding, this.variant, this.fontStyle, this.alignment, this.width, this.margin, this.controller, this.focusNode, this.isObscureText = false, this.textInputAction = TextInputAction.next, this.textInputType = TextInputType.text, this.maxLines, this.hintText, this.prefix, this.prefixConstraints, this.suffix, this.suffixConstraints, this.validator}); TextFormFieldShape? shape; TextFormFieldPadding? padding; TextFormFieldVariant? variant; TextFormFieldFontStyle? fontStyle; Alignment? alignment; double? width; EdgeInsetsGeometry? margin; TextEditingController? controller; FocusNode? focusNode; bool? isObscureText; TextInputAction? textInputAction; TextInputType? textInputType; int? maxLines; String? hintText; Widget? prefix; BoxConstraints? prefixConstraints; Widget? suffix; BoxConstraints? suffixConstraints; FormFieldValidator? validator; @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( controller: controller, focusNode: focusNode, style: _setFontStyle(), obscureText: isObscureText!, textInputAction: textInputAction, keyboardType: textInputType, maxLines: maxLines ?? 1, decoration: _buildDecoration(), validator: validator, ), ); } _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) { default: return TextStyle( color: ColorConstant.gray500, fontSize: getFontSize( 13.24, ), fontFamily: 'Roboto', fontWeight: FontWeight.w400, height: getVerticalSize( 1.21, ), ); } } _setOutlineBorderRadius() { switch (shape) { default: return BorderRadius.circular( getHorizontalSize( 20.00, ), ); } } _setBorderStyle() { switch (variant) { case TextFormFieldVariant.None: return InputBorder.none; default: return OutlineInputBorder( borderRadius: _setOutlineBorderRadius(), borderSide: BorderSide( color: ColorConstant.gray300, width: 1, ), ); } } _setFillColor() { switch (variant) { default: return ColorConstant.whiteA700; } } _setFilled() { switch (variant) { case TextFormFieldVariant.None: return false; default: return true; } } _setPadding() { switch (padding) { case TextFormFieldPadding.PaddingT13: return getPadding( left: 13, top: 13, bottom: 13, ); default: return getPadding( left: 12, top: 14, right: 12, bottom: 14, ); } } } enum TextFormFieldShape { RoundedBorder20, } enum TextFormFieldPadding { PaddingT14, PaddingT13, } enum TextFormFieldVariant { None, OutlineGray300, } enum TextFormFieldFontStyle { RobotoRomanRegular1324, }