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

203 lines
4.1 KiB
Dart

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,
}