import 'package:flutter/material.dart'; import 'package:flutter_lucide/flutter_lucide.dart'; import 'package:flutter_svg/svg.dart'; import '../../utils/colors.dart'; class PasswordWidget extends StatefulWidget { final String? label; final String? hintText; final TextEditingController? controller; final Function(String)? onChanged; final String? Function(String?)? validator; final bool enabled; final bool isArabic; final IconData? prefixIcon; final double borderRadius; final EdgeInsets? padding; const PasswordWidget({ super.key, this.label, this.hintText, this.controller, this.onChanged, this.validator, this.enabled = true, this.isArabic = false, this.prefixIcon = Icons.lock_outline, this.borderRadius = 12.0, this.padding, }); @override State createState() => _PasswordWidgetState(); } class _PasswordWidgetState extends State { bool _isPasswordVisible = false; late TextEditingController _controller; @override void initState() { super.initState(); _controller = widget.controller ?? TextEditingController(); } @override void dispose() { if (widget.controller == null) { _controller.dispose(); } super.dispose(); } @override Widget build(BuildContext context) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( decoration: BoxDecoration( color:Theme.of(context).brightness == Brightness.dark ? AppColors.darkCardColor:AppColors.inputColor, borderRadius: BorderRadius.circular(widget.borderRadius), boxShadow: const [ BoxShadow( color: Color(0x07000000), blurRadius: 1, offset: Offset(0, 1), spreadRadius: -0.50, ), ], ), child: TextFormField( controller: _controller, obscureText: !_isPasswordVisible, enabled: widget.enabled, onChanged: widget.onChanged, validator: widget.validator, style: TextStyle( color: AppColors.grayTxtColor, fontSize: 14, fontFamily: widget.isArabic ? "Readex_Pro" : 'Inter', fontWeight: FontWeight.w500, height: 1.33, ), decoration: InputDecoration( hintText: widget.hintText, hintStyle: const TextStyle( color: AppColors.inputTextColor, fontSize: 16, fontWeight: FontWeight.w500, ), prefixIcon: const Padding( padding: EdgeInsets.all(14.0), child: Icon(LucideIcons.key_round,size: 16,) ), suffixIcon: IconButton( icon: Icon( _isPasswordVisible ? Icons.visibility : Icons.visibility_off, color: AppColors.inputTextColor, size: 20, ), onPressed: () { setState(() { _isPasswordVisible = !_isPasswordVisible; }); }, ), border: InputBorder.none, contentPadding: widget.padding ?? const EdgeInsets.symmetric(horizontal: 16, vertical: 12), ), ), ), ], ); } }