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

69 lines
1.7 KiB
Dart

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<CustomTextField> {
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();
}
}