From 09618db28e27c037620f62f11260d94dc8bce6cf Mon Sep 17 00:00:00 2001 From: Nilanjan Chakrabarti Date: Tue, 19 Aug 2025 16:11:54 +0530 Subject: [PATCH] New file created for bank logos --- .../screens/manage_beneficiaries_screen.dart | 79 +------------------ .../screens/fund_transfer_amount_screen.dart | 20 +---- .../fund_transfer_beneficiary_screen.dart | 49 +----------- lib/l10n/app_localizations.dart | 32 ++++---- lib/l10n/app_localizations_en.dart | 27 +++---- lib/l10n/app_localizations_hi.dart | 30 +++---- lib/widgets/bank_logos.dart | 76 ++++++++++++++++++ 7 files changed, 117 insertions(+), 196 deletions(-) create mode 100644 lib/widgets/bank_logos.dart diff --git a/lib/features/beneficiaries/screens/manage_beneficiaries_screen.dart b/lib/features/beneficiaries/screens/manage_beneficiaries_screen.dart index a4e9271..b098116 100644 --- a/lib/features/beneficiaries/screens/manage_beneficiaries_screen.dart +++ b/lib/features/beneficiaries/screens/manage_beneficiaries_screen.dart @@ -5,6 +5,7 @@ import '../../../l10n/app_localizations.dart'; import '../../../di/injection.dart'; import 'package:kmobile/api/services/beneficiary_service.dart'; import 'package:shimmer/shimmer.dart'; +import 'package:kmobile/widgets/bank_logos.dart'; class ManageBeneficiariesScreen extends StatefulWidget { final String customerName; @@ -60,81 +61,7 @@ class _ManageBeneficiariesScreen extends State { ); } - Widget _getBankLogo(String? bankName) { - if (bankName != null && bankName.toLowerCase().contains('state bank of')) { - return Image.asset( - 'assets/images/sbi_logo.png', - width: 40, - height: 40, - ); - } - if (bankName != null && bankName.toLowerCase().contains('kangra central')) { - return Image.asset( - 'assets/images/icon.png', - width: 40, - height: 40, - ); - } - if (bankName != null && bankName.toLowerCase().contains('hdfc bank ltd')) { - return Image.asset( - 'assets/images/hdfc_logo.png', - width: 40, - height: 40, - ); - } - if (bankName != null && bankName.toLowerCase().contains('icici bank ltd')) { - return Image.asset( - 'assets/images/icici_logo.png', - width: 40, - height: 40, - ); - } - if (bankName != null && - bankName.toLowerCase().contains('punjab national bank')) { - return Image.asset( - 'assets/images/pnb_logo.png', - width: 40, - height: 40, - ); - } - if (bankName != null && bankName.toLowerCase().contains('axis')) { - return Image.asset( - 'assets/images/axisBank_logo.png', - width: 40, - height: 40, - ); - } - if (bankName != null && bankName.toLowerCase().contains('baroda')) { - return Image.asset( - 'assets/images/bankofBaroda_logo.png', - width: 40, - height: 40, - ); - } - if (bankName != null && bankName.toLowerCase().contains('canara bank')) { - return Image.asset( - 'assets/images/canaraBank_logo.png', - width: 40, - height: 40, - ); - } - if (bankName != null && bankName.toLowerCase().contains('kotak')) { - return Image.asset( - 'assets/images/kotak_logo.png', - width: 40, - height: 40, - ); - } - else { - return const Icon( - Icons.account_balance, - size: 40, - color: Colors.grey, - ); - } - } - - Widget _buildBeneficiaryList() { + Widget _buildBeneficiaryList() { if (_beneficiaries.isEmpty) { return Center( child: Text(AppLocalizations.of(context).noBeneficiaryFound)); @@ -147,7 +74,7 @@ class _ManageBeneficiariesScreen extends State { leading: CircleAvatar( radius: 24, backgroundColor: Colors.transparent, - child: _getBankLogo(item.bankName), + child: getBankLogo(item.bankName), ), title: Text(item.name), subtitle: Column( diff --git a/lib/features/fund_transfer/screens/fund_transfer_amount_screen.dart b/lib/features/fund_transfer/screens/fund_transfer_amount_screen.dart index 9b0c024..da8c8ec 100644 --- a/lib/features/fund_transfer/screens/fund_transfer_amount_screen.dart +++ b/lib/features/fund_transfer/screens/fund_transfer_amount_screen.dart @@ -5,6 +5,7 @@ import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:kmobile/api/services/neft_service.dart'; import 'package:kmobile/api/services/rtgs_service.dart'; +import 'package:kmobile/widgets/bank_logos.dart'; import 'package:kmobile/data/models/beneficiary.dart'; import 'package:kmobile/data/models/neft_transaction.dart'; import 'package:kmobile/data/models/payment_response.dart'; @@ -44,23 +45,6 @@ class _FundTransferAmountScreenState extends State { super.dispose(); } - Widget _getBankLogo(String? bankName) { - if (bankName != null && - bankName.toLowerCase().contains('state bank of india')) { - return Image.asset( - 'assets/images/sbi_logo.png', - width: 40, - height: 40, - ); - } else { - return const Icon( - Icons.account_balance, - size: 40, - color: Colors.grey, - ); - } - } - void _onProceed() { if (_formKey.currentState!.validate()) { final amount = double.tryParse(_amountController.text) ?? 0; @@ -319,7 +303,7 @@ class _FundTransferAmountScreenState extends State { elevation: 0, margin: const EdgeInsets.symmetric(vertical: 8.0), child: ListTile( - leading: _getBankLogo(widget.creditBeneficiary.bankName), + leading: getBankLogo(widget.creditBeneficiary.bankName), title: Text(widget.creditBeneficiary.name), subtitle: Text(widget.creditBeneficiary.accountNo), ), diff --git a/lib/features/fund_transfer/screens/fund_transfer_beneficiary_screen.dart b/lib/features/fund_transfer/screens/fund_transfer_beneficiary_screen.dart index fea33ca..fab832c 100644 --- a/lib/features/fund_transfer/screens/fund_transfer_beneficiary_screen.dart +++ b/lib/features/fund_transfer/screens/fund_transfer_beneficiary_screen.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:kmobile/widgets/bank_logos.dart'; import 'package:kmobile/data/models/beneficiary.dart'; import 'package:kmobile/features/fund_transfer/screens/fund_transfer_amount_screen.dart'; import '../../../l10n/app_localizations.dart'; @@ -63,51 +64,7 @@ class _FundTransferBeneficiaryScreenState ); } - Widget _getBankLogo(String? bankName) { - if (bankName != null && bankName.toLowerCase().contains('state bank ')) { - return Image.asset( - 'assets/images/sbi_logo.png', - width: 40, - height: 40, - ); - } - if (bankName != null && bankName.toLowerCase().contains('kangra central')) { - return Image.asset( - 'assets/images/icon.png', - width: 40, - height: 40, - ); - } - if (bankName != null && bankName.toLowerCase().contains('hdfc bank ltd')) { - return Image.asset( - 'assets/images/hdfc_logo.png', - width: 40, - height: 40, - ); - } - if (bankName != null && bankName.toLowerCase().contains('icici bank ltd')) { - return Image.asset( - 'assets/images/icici_logo.png', - width: 40, - height: 40, - ); - } - if (bankName != null && - bankName.toLowerCase().contains('punjab national bank')) { - return Image.asset( - 'assets/images/pnb_logo.png', - width: 40, - height: 40, - ); - } else { - return const Icon( - Icons.account_balance, - size: 40, - color: Colors.grey, - ); - } - } - + Widget _buildBeneficiaryList() { if (_beneficiaries.isEmpty) { return Center( @@ -121,7 +78,7 @@ class _FundTransferBeneficiaryScreenState leading: CircleAvatar( radius: 24, backgroundColor: Colors.transparent, - child: _getBankLogo(beneficiary.bankName), + child: getBankLogo(beneficiary.bankName), ), title: Text(beneficiary.name), subtitle: Column( diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index 3ed7425..d787df9 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -62,8 +62,7 @@ import 'app_localizations_hi.dart'; /// be consistent with the languages listed in the AppLocalizations.supportedLocales /// property. abstract class AppLocalizations { - AppLocalizations(String locale) - : localeName = intl.Intl.canonicalizedLocale(locale.toString()); + AppLocalizations(String locale) : localeName = intl.Intl.canonicalizedLocale(locale.toString()); final String localeName; @@ -71,8 +70,7 @@ abstract class AppLocalizations { return Localizations.of(context, AppLocalizations)!; } - static const LocalizationsDelegate delegate = - _AppLocalizationsDelegate(); + static const LocalizationsDelegate delegate = _AppLocalizationsDelegate(); /// A list of this localizations delegate along with the default localizations /// delegates. @@ -84,8 +82,7 @@ abstract class AppLocalizations { /// Additional delegates can be added by appending to this list in /// MaterialApp. This list does not have to be used at all if a custom list /// of delegates is preferred or required. - static const List> localizationsDelegates = - >[ + static const List> localizationsDelegates = >[ delegate, GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, @@ -1509,8 +1506,7 @@ abstract class AppLocalizations { String get validateBeneficiaryproceeding; } -class _AppLocalizationsDelegate - extends LocalizationsDelegate { +class _AppLocalizationsDelegate extends LocalizationsDelegate { const _AppLocalizationsDelegate(); @override @@ -1519,25 +1515,25 @@ class _AppLocalizationsDelegate } @override - bool isSupported(Locale locale) => - ['en', 'hi'].contains(locale.languageCode); + bool isSupported(Locale locale) => ['en', 'hi'].contains(locale.languageCode); @override bool shouldReload(_AppLocalizationsDelegate old) => false; } AppLocalizations lookupAppLocalizations(Locale locale) { + + // Lookup logic when only language code is specified. switch (locale.languageCode) { - case 'en': - return AppLocalizationsEn(); - case 'hi': - return AppLocalizationsHi(); + case 'en': return AppLocalizationsEn(); + case 'hi': return AppLocalizationsHi(); } throw FlutterError( - 'AppLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' - 'an issue with the localizations generation tool. Please file an issue ' - 'on GitHub with a reproducible sample app and the gen-l10n configuration ' - 'that was used.'); + 'AppLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' + 'an issue with the localizations generation tool. Please file an issue ' + 'on GitHub with a reproducible sample app and the gen-l10n configuration ' + 'that was used.' + ); } diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 83d8401..afab0b7 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -486,8 +486,7 @@ class AppLocalizationsEn extends AppLocalizations { String get otpVerification => 'OTP Verification'; @override - String get otpSentMessage => - 'Enter the 4-digit OTP sent to your mobile number'; + String get otpSentMessage => 'Enter the 4-digit OTP sent to your mobile number'; @override String get verifyOtp => 'Verify OTP'; @@ -505,15 +504,13 @@ class AppLocalizationsEn extends AppLocalizations { String get tpinRequired => 'TPIN Required'; @override - String get tpinRequiredMessage => - 'You need to set your TPIN to continue with secure transactions'; + String get tpinRequiredMessage => 'You need to set your TPIN to continue with secure transactions'; @override String get setTpinTitle => 'Set TPIN'; @override - String get tpinInfo => - 'Your TPIN is a 6-digit code used to authorize transactions. Keep it safe and do not share it with anyone.'; + String get tpinInfo => 'Your TPIN is a 6-digit code used to authorize transactions. Keep it safe and do not share it with anyone.'; @override String get tpinFailed => 'Failed to set TPIN. Please try again.'; @@ -567,8 +564,7 @@ class AppLocalizationsEn extends AppLocalizations { String get enableFingerprintLogin => 'Enable Fingerprint Login?'; @override - String get enableFingerprintMessage => - 'Would you like to enable fingerprint authentication for faster login?'; + String get enableFingerprintMessage => 'Would you like to enable fingerprint authentication for faster login?'; @override String get no => 'No'; @@ -589,8 +585,7 @@ class AppLocalizationsEn extends AppLocalizations { String get loading => 'Loading......'; @override - String get enableFingerprintQuick => - 'Enable fingerprint authentication for quick login?'; + String get enableFingerprintQuick => 'Enable fingerprint authentication for quick login?'; @override String get kccb => 'KCCB'; @@ -692,15 +687,13 @@ class AppLocalizationsEn extends AppLocalizations { String get invalidRtgs => 'Invalid Amount for RTGS'; @override - String get invalidRtgsPopUp => - 'RTGS transactions require a minimum amount of 200,000. Please enter a higher amount or select NEFT as the transaction mode.'; + String get invalidRtgsPopUp => 'RTGS transactions require a minimum amount of 200,000. Please enter a higher amount or select NEFT as the transaction mode.'; @override String get correctTpin => 'Please Enter the correct TPIN'; @override - String get insufficientFund => - 'Your account does not have sufficient balance'; + String get insufficientFund => 'Your account does not have sufficient balance'; @override String get creditedTo => 'Credited To'; @@ -712,13 +705,11 @@ class AppLocalizationsEn extends AppLocalizations { String get proceed => 'Proceed'; @override - String get plsValidateBeneficiary => - 'Please validate beneficiary details first'; + String get plsValidateBeneficiary => 'Please validate beneficiary details first'; @override String get accno7to20 => 'Account number must be between 7 and 20 digits'; @override - String get validateBeneficiaryproceeding => - 'Please validate beneficiary before proceeding'; + String get validateBeneficiaryproceeding => 'Please validate beneficiary before proceeding'; } diff --git a/lib/l10n/app_localizations_hi.dart b/lib/l10n/app_localizations_hi.dart index cf78143..bc0eb54 100644 --- a/lib/l10n/app_localizations_hi.dart +++ b/lib/l10n/app_localizations_hi.dart @@ -52,8 +52,7 @@ class AppLocalizationsHi extends AppLocalizations { String get enableBiometric => 'बायोमेट्रिक प्रमाणीकरण सक्षम करें'; @override - String get useBiometricPrompt => - 'तेज़ लॉगिन के लिए फिंगरप्रिंट/फेस आईडी का उपयोग करें?'; + String get useBiometricPrompt => 'तेज़ लॉगिन के लिए फिंगरप्रिंट/फेस आईडी का उपयोग करें?'; @override String get later => 'बाद में'; @@ -487,8 +486,7 @@ class AppLocalizationsHi extends AppLocalizations { String get otpVerification => 'ओटीपी सत्यापन'; @override - String get otpSentMessage => - 'अपने मोबाइल नंबर पर भेजा गया 4-अंकों का ओटीपी दर्ज करें'; + String get otpSentMessage => 'अपने मोबाइल नंबर पर भेजा गया 4-अंकों का ओटीपी दर्ज करें'; @override String get verifyOtp => 'ओटीपी सत्यापित करें'; @@ -506,15 +504,13 @@ class AppLocalizationsHi extends AppLocalizations { String get tpinRequired => 'टी-पिन आवश्यक है'; @override - String get tpinRequiredMessage => - 'सुरक्षित लेनदेन के लिए टी-पिन सेट करना आवश्यक है'; + String get tpinRequiredMessage => 'सुरक्षित लेनदेन के लिए टी-पिन सेट करना आवश्यक है'; @override String get setTpinTitle => 'टी-पिन सेट करें'; @override - String get tpinInfo => - 'आपका टी-पिन 6 अंकों का कोड है जिसका उपयोग लेन-देन को प्रमाणित करने के लिए किया जाता है। इसे सुरक्षित रखें और किसी से साझा न करें।'; + String get tpinInfo => 'आपका टी-पिन 6 अंकों का कोड है जिसका उपयोग लेन-देन को प्रमाणित करने के लिए किया जाता है। इसे सुरक्षित रखें और किसी से साझा न करें।'; @override String get tpinFailed => 'टी-पिन सेट करने में विफल। कृपया पुनः प्रयास करें।'; @@ -568,8 +564,7 @@ class AppLocalizationsHi extends AppLocalizations { String get enableFingerprintLogin => 'फिंगरप्रिंट लॉगिन सक्षम करें?'; @override - String get enableFingerprintMessage => - 'क्या आप तेज लॉगिन के लिए फिंगरप्रिंट प्रमाणीकरण सक्षम करना चाहेंगे?'; + String get enableFingerprintMessage => 'क्या आप तेज लॉगिन के लिए फिंगरप्रिंट प्रमाणीकरण सक्षम करना चाहेंगे?'; @override String get no => 'नहीं'; @@ -578,8 +573,7 @@ class AppLocalizationsHi extends AppLocalizations { String get yes => 'हाँ'; @override - String get authenticateToEnable => - 'फिंगरप्रिंट लॉगिन सक्षम करने के लिए प्रमाणीकरण करें'; + String get authenticateToEnable => 'फिंगरप्रिंट लॉगिन सक्षम करने के लिए प्रमाणीकरण करें'; @override String get exitApp => 'ऐप बंद करें'; @@ -591,8 +585,7 @@ class AppLocalizationsHi extends AppLocalizations { String get loading => 'लोड हो रहा है......'; @override - String get enableFingerprintQuick => - 'तेज़ लॉगिन के लिए फिंगरप्रिंट प्रमाणीकरण सक्षम करें?'; + String get enableFingerprintQuick => 'तेज़ लॉगिन के लिए फिंगरप्रिंट प्रमाणीकरण सक्षम करें?'; @override String get kccb => 'केसीसीबी'; @@ -694,8 +687,7 @@ class AppLocalizationsHi extends AppLocalizations { String get invalidRtgs => 'RTGS के लिए अमान्य राशि'; @override - String get invalidRtgsPopUp => - 'RTGS लेनदेन के लिए न्यूनतम 2,00,000 रुपये की राशि की आवश्यकता होती है। कृपया अधिक राशि दर्ज करें या लेनदेन मोड के रूप में NEFT चुनें'; + String get invalidRtgsPopUp => 'RTGS लेनदेन के लिए न्यूनतम 2,00,000 रुपये की राशि की आवश्यकता होती है। कृपया अधिक राशि दर्ज करें या लेनदेन मोड के रूप में NEFT चुनें'; @override String get correctTpin => 'कृपया सही टी-पिन दर्ज करें'; @@ -713,13 +705,11 @@ class AppLocalizationsHi extends AppLocalizations { String get proceed => 'आगे बढ़ना'; @override - String get plsValidateBeneficiary => - 'कृपया पहले लाभार्थी विवरण सत्यापित करें'; + String get plsValidateBeneficiary => 'कृपया पहले लाभार्थी विवरण सत्यापित करें'; @override String get accno7to20 => 'खाता संख्या सात से बीस अंकों के बीच होनी चाहिए'; @override - String get validateBeneficiaryproceeding => - 'कृपया आगे बढ़ने से पहले लाभार्थी को पट्टे पर मान्य करें'; + String get validateBeneficiaryproceeding => 'कृपया आगे बढ़ने से पहले लाभार्थी को पट्टे पर मान्य करें'; } diff --git a/lib/widgets/bank_logos.dart b/lib/widgets/bank_logos.dart new file mode 100644 index 0000000..366562e --- /dev/null +++ b/lib/widgets/bank_logos.dart @@ -0,0 +1,76 @@ +import 'package:flutter/material.dart'; + +Widget getBankLogo(String? bankName) { + if (bankName != null && bankName.toLowerCase().contains('state bank of')) { + return Image.asset( + 'assets/images/sbi_logo.png', + width: 40, + height: 40, + ); + } + if (bankName != null && bankName.toLowerCase().contains('kangra central')) { + return Image.asset( + 'assets/images/icon.png', + width: 40, + height: 40, + ); + } + if (bankName != null && bankName.toLowerCase().contains('hdfc bank ltd')) { + return Image.asset( + 'assets/images/hdfc_logo.png', + width: 40, + height: 40, + ); + } + if (bankName != null && bankName.toLowerCase().contains('icici bank ltd')) { + return Image.asset( + 'assets/images/icici_logo.png', + width: 40, + height: 40, + ); + } + if (bankName != null && + bankName.toLowerCase().contains('punjab national bank')) { + return Image.asset( + 'assets/images/pnb_logo.png', + width: 40, + height: 40, + ); + } + if (bankName != null && bankName.toLowerCase().contains('axis')) { + return Image.asset( + 'assets/images/axisBank_logo.png', + width: 40, + height: 40, + ); + } + if (bankName != null && bankName.toLowerCase().contains('baroda')) { + return Image.asset( + 'assets/images/bankofBaroda_logo.png', + width: 40, + height: 40, + ); + } + if (bankName != null && bankName.toLowerCase().contains('canara bank')) { + return Image.asset( + 'assets/images/canaraBank_logo.png', + width: 40, + height: 40, + ); + } + if (bankName != null && bankName.toLowerCase().contains('kotak')) { + return Image.asset( + 'assets/images/kotak_logo.png', + width: 40, + height: 40, + ); + } + else { + return const Icon( + Icons.account_balance, + size: 40, + color: Colors.grey, + ); + } + } +