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