Localization of yojna schemes done

This commit is contained in:
2026-03-11 18:13:04 +05:30
parent eb81269083
commit 49cac5f469
9 changed files with 303 additions and 161 deletions

View File

@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:kmobile/api/services/yojna_service.dart';
import 'package:kmobile/di/injection.dart';
import 'package:kmobile/l10n/app_localizations.dart';
class PMSBYScreen extends StatefulWidget {
final Map<String, dynamic>? initialData;
@@ -151,6 +152,7 @@ class _PMSBYScreenState extends State<PMSBYScreen> {
}
Future<void> _handleRegister() async {
final l10n = AppLocalizations.of(context);
// Show loading spinner
showDialog(
context: context,
@@ -191,7 +193,7 @@ class _PMSBYScreenState extends State<PMSBYScreen> {
);
String x = response.toString();
if(x.contains('RECORD ALREADY EXISTS')){
x= "A record already exists for this request. Your submission has been registered previously.";
x= l10n.recordAlreadyExists;
}
if (mounted) {
@@ -202,14 +204,14 @@ class _PMSBYScreenState extends State<PMSBYScreen> {
context: context,
barrierDismissible: false,
builder: (context) => AlertDialog(
title: const Text('Response'),
title: Text(l10n.response),
content: SingleChildScrollView(child: Text(x)),
actions: [
TextButton(
onPressed: () {
Navigator.of(context).popUntil((route) => route.isFirst);
},
child: const Text('Close'),
child: Text(l10n.close),
),
],
),
@@ -219,7 +221,7 @@ class _PMSBYScreenState extends State<PMSBYScreen> {
if (mounted) {
Navigator.pop(context); // Close loading spinner
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Error: ${e.toString()}')),
SnackBar(content: Text(l10n.genericError(e.toString()))),
);
}
}
@@ -227,9 +229,10 @@ class _PMSBYScreenState extends State<PMSBYScreen> {
@override
Widget build(BuildContext context) {
final l10n = AppLocalizations.of(context);
return Scaffold(
appBar: AppBar(
title: const Text('PMSBY Registration'),
title: Text(l10n.pmsbyRegistration),
),
body: SingleChildScrollView(
padding: const EdgeInsets.all(16.0),
@@ -238,43 +241,43 @@ class _PMSBYScreenState extends State<PMSBYScreen> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
_buildTextField(_nameController, 'Customer Name', readOnly: _isFetched('customername')),
_buildTextField(_customerNoController, 'Customer No', readOnly: _isFetched('customerno')),
_buildTextField(_accountNoController, 'Account No', keyboardType: TextInputType.number, readOnly: _isFetched('accountno')),
_buildTextField(_balanceController, 'Available Balance', keyboardType: TextInputType.number, readOnly: _isFetched('availablebalance')),
_buildTextField(_aadhaarController, 'Aadhaar No', keyboardType: TextInputType.number, readOnly: _isFetched('aadharno')),
_buildTextField(_dobController, 'Customer DOB (DD/MM/YYYY)', readOnly: _isFetched('customerdob')),
_buildTextField(_genderController, 'Gender', readOnly: _isFetched('gender')),
_buildTextField(_marriedController, 'Married (Yes/No)', readOnly: _isFetched('married')),
_buildTextField(_mobileController, 'Mobile No', keyboardType: TextInputType.phone, readOnly: _isFetched('mobileno')),
_buildTextField(_nameController, l10n.customerName, readOnly: _isFetched('customername')),
_buildTextField(_customerNoController, l10n.customerNo, readOnly: _isFetched('customerno')),
_buildTextField(_accountNoController, l10n.accountNumber, keyboardType: TextInputType.number, readOnly: _isFetched('accountno')),
_buildTextField(_balanceController, l10n.availableBalance, keyboardType: TextInputType.number, readOnly: _isFetched('availablebalance')),
_buildTextField(_aadhaarController, l10n.aadhaarNo, keyboardType: TextInputType.number, readOnly: _isFetched('aadharno')),
_buildTextField(_dobController, l10n.customerDobFormat, readOnly: _isFetched('customerdob')),
_buildTextField(_genderController, l10n.gender, readOnly: _isFetched('gender')),
_buildTextField(_marriedController, l10n.marriedYesNo, readOnly: _isFetched('married')),
_buildTextField(_mobileController, l10n.mobileNumber, keyboardType: TextInputType.phone, readOnly: _isFetched('mobileno')),
_buildTextField(_emailController, 'Email ID', keyboardType: TextInputType.emailAddress, readOnly: _isFetched('emailid')),
_buildTextField(_address1Controller, 'Address 1', readOnly: _isFetched('address1')),
_buildTextField(_address2Controller, 'Address 2', readOnly: _isFetched('address2')),
_buildTextField(_cityController, 'City', readOnly: _isFetched('city')),
_buildTextField(_panController, 'PAN', readOnly: _isFetched('pan')),
_buildTextField(_ifscController, 'IFSC Code', readOnly: _isFetched('ifsccode')),
_buildTextField(_acctOpeningDateController, 'Date of Acct Opening', readOnly: _isFetched('dateofacctopening')),
_buildTextField(_pincodeController, 'Pincode', keyboardType: TextInputType.number, readOnly: _isFetched('pincode')),
_buildTextField(_stateController, 'State', readOnly: _isFetched('state')),
_buildTextField(_countryController, 'Country', readOnly: _isFetched('country')),
_buildDropdownField(_ruralCategoryController, 'Rural Category', _ruralOptions, readOnly: _isFetched('ruralcategory')),
_buildTextField(_address1Controller, l10n.address1, readOnly: _isFetched('address1')),
_buildTextField(_address2Controller, l10n.address2, readOnly: _isFetched('address2')),
_buildTextField(_cityController, l10n.city, readOnly: _isFetched('city')),
_buildTextField(_panController, l10n.pan, readOnly: _isFetched('pan')),
_buildTextField(_ifscController, l10n.ifscCode, readOnly: _isFetched('ifsccode')),
_buildTextField(_acctOpeningDateController, l10n.dateOfAcctOpening, readOnly: _isFetched('dateofacctopening')),
_buildTextField(_pincodeController, l10n.pincode, keyboardType: TextInputType.number, readOnly: _isFetched('pincode')),
_buildTextField(_stateController, l10n.state, readOnly: _isFetched('state')),
_buildTextField(_countryController, l10n.country, readOnly: _isFetched('country')),
_buildDropdownField(_ruralCategoryController, l10n.ruralCategory, _ruralOptions, readOnly: _isFetched('ruralcategory')),
const Divider(height: 32),
const Text('Policy Details', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
Text(l10n.policyDetails, style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
const SizedBox(height: 16),
_buildTextField(_policyNumberController, 'Policy Number', readOnly: _isFetched('policyno')),
_buildTextField(_premiumAmountController, 'Premium Amount', keyboardType: TextInputType.number, readOnly: _isFetched('premiumamount')),
_buildTextField(_financialYearController, 'Financial Year', readOnly: _isFetched('financialyear')),
_buildTextField(_policyStatusController, 'Policy Status', readOnly: _isFetched('policystatus')),
_buildDropdownField(_healthStatusController, 'Health Status', _healthStatusOptions),
_buildTextField(_collectionChannelController, 'Collection Channel'),
_buildTextField(_policyNumberController, l10n.policyNumber, readOnly: _isFetched('policyno')),
_buildTextField(_premiumAmountController, l10n.premiumAmount, keyboardType: TextInputType.number, readOnly: _isFetched('premiumamount')),
_buildTextField(_financialYearController, l10n.financialYear, readOnly: _isFetched('financialyear')),
_buildTextField(_policyStatusController, l10n.policyStatus, readOnly: _isFetched('policystatus')),
_buildDropdownField(_healthStatusController, l10n.healthStatus, _healthStatusOptions),
_buildTextField(_collectionChannelController, l10n.collectionChannel),
const Divider(height: 32),
const Text('Nominee Details', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
Text(l10n.nomineeDetails, style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
const SizedBox(height: 16),
_buildTextField(_nomineeNameController, 'Nominee Name'),
_buildTextField(_nomineeAddressController, 'Nominee Address'),
_buildDropdownField(_relationWithNomineeController, 'Relation with Nominee', _relationshipOptions, readOnly: _isFetched('relationwithnominee')),
_buildTextField(_nomineeRelationshipController, 'Nominee Relationship'),
_buildDropdownField(_nomineeMinorController, 'Nominee Minor', _minorOptions, readOnly: _isFetched('nomineeminor')),
_buildTextField(_nomineeNameController, l10n.nomineeName),
_buildTextField(_nomineeAddressController, l10n.nomineeAddress),
_buildDropdownField(_relationWithNomineeController, l10n.relationWithNominee, _relationshipOptions, readOnly: _isFetched('relationwithnominee')),
_buildTextField(_nomineeRelationshipController, l10n.nomineeRelationship),
_buildDropdownField(_nomineeMinorController, l10n.nomineeMinor, _minorOptions, readOnly: _isFetched('nomineeminor')),
const SizedBox(height: 24),
ElevatedButton(
onPressed: _handleRegister,
@@ -286,9 +289,9 @@ class _PMSBYScreenState extends State<PMSBYScreen> {
borderRadius: BorderRadius.circular(8),
),
),
child: const Text(
'Register',
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
child: Text(
l10n.register,
style: const TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
),
const SizedBox(height: 32),