import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import '../../../core/constants/assets.dart'; import '../../../core/constants/colors.dart'; import '../../../core/utils/size_config.dart'; class LoginTextField extends StatelessWidget { final TextEditingController controller; final FocusNode focusNode; final String label; final String iconPath; final bool isPassword; final bool obscureText; final VoidCallback? onToggleVisibility; const LoginTextField({ super.key, required this.controller, required this.focusNode, required this.label, required this.iconPath, this.isPassword = false, this.obscureText = false, this.onToggleVisibility, }); @override Widget build(BuildContext context) { return TextField( controller: controller, focusNode: focusNode, obscureText: isPassword ? obscureText : false, decoration: InputDecoration( labelText: label, prefixIcon: Padding( padding: EdgeInsets.all(12.0.w()), child: SvgPicture.asset( iconPath, width: 24.0.w(), height: 24.0.h(), colorFilter: ColorFilter.mode( focusNode.hasFocus ? Colors.black87 : Colors.grey, BlendMode.srcIn, ), ), ), suffixIcon: isPassword ? IconButton( onPressed: onToggleVisibility, icon: SvgPicture.asset( obscureText ? AssetsManager.passwordVisibility : AssetsManager.passwordVisibilityOff, width: 24.0.w(), height: 24.0.h(), colorFilter: ColorFilter.mode( focusNode.hasFocus ? Colors.black87 : Colors.grey, BlendMode.srcIn, ), ), ) : null, border: OutlineInputBorder( borderRadius: BorderRadius.circular(12.0.w()), ), focusedBorder: OutlineInputBorder( borderSide: BorderSide(color: AppColors.borderBlue), borderRadius: BorderRadius.circular(12.0.w()), ), ), ); } }