import 'package:flutter/material.dart'; class CustomTextField extends StatefulWidget { final String hintText; final Function(String)? onSaved; final String? Function(String?)? validator; final Function()? onTap; final TextInputType? textInputType; final IconButton? suffixIcon; final Function(String)? onChanged; final bool? isObscureText; FocusNode? focusNode; String? initialValue ; TextEditingController? controller; CustomTextField( {super.key, required this.hintText, this.controller, this.onChanged, this.focusNode, this.isObscureText, this.initialValue, this.suffixIcon, this.onSaved, this.validator, this.onTap, this.textInputType}); @override _CustomTextFieldState createState() => _CustomTextFieldState(); } class _CustomTextFieldState extends State { final TextEditingController _controller = TextEditingController(); @override Widget build(BuildContext context) { return TextFormField( maxLines: 1, initialValue: widget.initialValue , obscureText: widget.isObscureText ?? false, onChanged: widget.onChanged, onTap: widget.onTap, focusNode: widget.focusNode, controller: _controller, decoration: InputDecoration( suffixIcon: widget.suffixIcon, hintStyle: TextStyle(color: Colors.black.withOpacity(.4)), hintText: widget.hintText, border: const UnderlineInputBorder(), ), validator: widget.validator, onSaved: (String? value) { if (widget.onSaved != null) { widget.onSaved!(_controller.text); } }, ); } @override void dispose() { _controller.dispose(); super.dispose(); } }