import 'package:flutter/material.dart'; class CustomTextField extends StatelessWidget { final TextEditingController controller; final String label; final String? hint; final IconData? icon; final TextInputType keyboardType; final String? Function(String?)? validator; final int maxLines; final bool readOnly; final VoidCallback? onTap; final Widget? suffix; const CustomTextField({ super.key, required this.controller, required this.label, this.hint, this.icon, this.keyboardType = TextInputType.text, this.validator, this.maxLines = 1, this.readOnly = false, this.onTap, this.suffix, }); @override Widget build(BuildContext context) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( label, style: TextStyle( fontSize: 14, fontWeight: FontWeight.w600, color: Colors.grey.shade700, ), ), SizedBox(height: 8), TextFormField( controller: controller, keyboardType: keyboardType, validator: validator, maxLines: maxLines, readOnly: readOnly, onTap: onTap, decoration: InputDecoration( hintText: hint, prefixIcon: icon != null ? Icon(icon, color: Colors.blue.shade400, size: 22) : null, suffixIcon: suffix, filled: true, fillColor: Colors.white, contentPadding: EdgeInsets.symmetric( horizontal: 16, vertical: maxLines > 1 ? 16 : 14, ), border: OutlineInputBorder( borderRadius: BorderRadius.circular(12), borderSide: BorderSide(color: Colors.grey.shade300), ), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(12), borderSide: BorderSide(color: Colors.grey.shade300), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(12), borderSide: BorderSide(color: Colors.blue, width: 2), ), errorBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(12), borderSide: BorderSide(color: Colors.red.shade300), ), focusedErrorBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(12), borderSide: BorderSide(color: Colors.red, width: 2), ), ), ), ], ); } }