IFSC Field Testing #2

This commit is contained in:
2025-09-16 12:59:31 +05:30
parent d2044d49b5
commit ba1ef0ed24
2 changed files with 28 additions and 6 deletions

View File

@@ -34,6 +34,7 @@ final _ifscFieldKey = GlobalKey<FormFieldState>();
final TextEditingController branchNameController = TextEditingController(); final TextEditingController branchNameController = TextEditingController();
final TextEditingController ifscController = TextEditingController(); final TextEditingController ifscController = TextEditingController();
final TextEditingController phoneController = TextEditingController(); final TextEditingController phoneController = TextEditingController();
final _ifscFocusNode = FocusNode();
final service = getIt<BeneficiaryService>(); final service = getIt<BeneficiaryService>();
bool _isValidating = false; bool _isValidating = false;
@@ -45,6 +46,11 @@ final _ifscFieldKey = GlobalKey<FormFieldState>();
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_ifscFocusNode.addListener(() {
if (!_ifscFocusNode.hasFocus && ifscController.text.trim().length == 11) {
_validateIFSC();
}
});
WidgetsBinding.instance.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
setState(() { setState(() {
accountType = 'Savings'; accountType = 'Savings';
@@ -52,6 +58,19 @@ final _ifscFieldKey = GlobalKey<FormFieldState>();
}); });
} }
@override
void dispose() {
accountNumberController.dispose();
confirmAccountNumberController.dispose();
nameController.dispose();
bankNameController.dispose();
branchNameController.dispose();
ifscController.dispose();
phoneController.dispose();
_ifscFocusNode.dispose();
super.dispose();
}
void _validateIFSC() async { void _validateIFSC() async {
var beneficiaryService = getIt<BeneficiaryService>(); var beneficiaryService = getIt<BeneficiaryService>();
final ifsc = ifscController.text.trim().toUpperCase(); final ifsc = ifscController.text.trim().toUpperCase();
@@ -296,6 +315,7 @@ final _ifscFieldKey = GlobalKey<FormFieldState>();
), ),
const SizedBox(height: 24), const SizedBox(height: 24),
TextFormField( TextFormField(
focusNode: _ifscFocusNode,
key: _ifscFieldKey, key: _ifscFieldKey,
controller: ifscController, controller: ifscController,
maxLength: 11, maxLength: 11,
@@ -309,9 +329,6 @@ final _ifscFieldKey = GlobalKey<FormFieldState>();
), ),
textCapitalization: TextCapitalization.characters, textCapitalization: TextCapitalization.characters,
textInputAction: TextInputAction.next, textInputAction: TextInputAction.next,
onFieldSubmitted: (_) {
_validateIFSC();
},
onChanged: (value) { onChanged: (value) {
setState(() { setState(() {
final trimmed = value.trim().toUpperCase(); final trimmed = value.trim().toUpperCase();

View File

@@ -39,6 +39,7 @@ class _QuickPayOutsideBankScreen extends State<QuickPayOutsideBankScreen> {
final phoneController = TextEditingController(); final phoneController = TextEditingController();
final amountController = TextEditingController(); final amountController = TextEditingController();
final remarksController = TextEditingController(); final remarksController = TextEditingController();
final _ifscFocusNode = FocusNode();
final service = getIt<BeneficiaryService>(); final service = getIt<BeneficiaryService>();
late String accountType; late String accountType;
@@ -49,6 +50,11 @@ class _QuickPayOutsideBankScreen extends State<QuickPayOutsideBankScreen> {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_ifscFocusNode.addListener(() {
if (!_ifscFocusNode.hasFocus && ifscController.text.trim().length == 11) {
_validateIFSC();
}
});
WidgetsBinding.instance.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
setState(() { setState(() {
accountType = 'Savings'; accountType = 'Savings';
@@ -139,6 +145,7 @@ class _QuickPayOutsideBankScreen extends State<QuickPayOutsideBankScreen> {
amountController.dispose(); amountController.dispose();
remarksController.dispose(); remarksController.dispose();
super.dispose(); super.dispose();
_ifscFocusNode.dispose();
} }
void _onProceedToPay() { void _onProceedToPay() {
@@ -479,6 +486,7 @@ class _QuickPayOutsideBankScreen extends State<QuickPayOutsideBankScreen> {
children: [ children: [
Expanded( Expanded(
child: TextFormField( child: TextFormField(
focusNode: _ifscFocusNode,
maxLength: 11, maxLength: 11,
inputFormatters: [ inputFormatters: [
LengthLimitingTextInputFormatter(11), LengthLimitingTextInputFormatter(11),
@@ -501,9 +509,6 @@ class _QuickPayOutsideBankScreen extends State<QuickPayOutsideBankScreen> {
), ),
controller: ifscController, controller: ifscController,
textInputAction: TextInputAction.next, textInputAction: TextInputAction.next,
onFieldSubmitted: (_) {
_validateIFSC();
},
onChanged: (value) { onChanged: (value) {
setState(() { setState(() {
final trimmed = value.trim().toUpperCase(); final trimmed = value.trim().toUpperCase();