import 'package:flutter/material.dart'; import 'package:kmobile/data/models/user.dart'; import 'package:kmobile/features/yojna/screens/apy_register_screen.dart'; import 'package:kmobile/l10n/app_localizations.dart'; class APYScreen extends StatefulWidget { final List users; final int selectedIndex; const APYScreen({ super.key, required this.users, required this.selectedIndex, }); @override State createState() => _APYScreenState(); } class _APYScreenState extends State { User? _selectedAccount; List _filteredUsers = []; final _formKey = GlobalKey(); @override void initState() { super.initState(); _filteredUsers = widget.users .where((user) => ['SA', 'SB', 'CA', 'CC'].contains(user.accountType)) .toList(); // Pre-fill the account number if possible if (widget.users.isNotEmpty && widget.selectedIndex < widget.users.length) { if (_filteredUsers.isNotEmpty) { if (_filteredUsers.contains(widget.users[widget.selectedIndex])) { _selectedAccount = widget.users[widget.selectedIndex]; } else { _selectedAccount = _filteredUsers.first; } } else { _selectedAccount = widget.users[widget.selectedIndex]; } } else { if (_filteredUsers.isNotEmpty) { _selectedAccount = _filteredUsers.first; } } } @override Widget build(BuildContext context) { final l10n = AppLocalizations.of(context); return Scaffold( appBar: AppBar( title: Text(l10n.apyRegistration), centerTitle: false, ), body: SingleChildScrollView( padding: const EdgeInsets.all(16.0), child: Form( key: _formKey, child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ Card( elevation: 2, child: Padding( padding: const EdgeInsets.all(16.0), child: Text( l10n.apyDescription, style: Theme.of(context).textTheme.titleMedium, ), ), ), const SizedBox(height: 16), Card( elevation: 2, child: Padding( padding: const EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ DropdownButtonFormField( value: _selectedAccount, decoration: InputDecoration( labelText: l10n.accountNumber, border: const OutlineInputBorder(), contentPadding: const EdgeInsets.symmetric( vertical: 20, horizontal: 12), ), items: _filteredUsers.map((user) { return DropdownMenuItem( value: user, child: Text(user.accountNo.toString()), ); }).toList(), onChanged: (User? newUser) { setState(() { _selectedAccount = newUser; }); }, validator: (value) { if (value == null) { return l10n.accountNumberRequired; } return null; }, ), ], ), ), ), const SizedBox(height: 24), ElevatedButton( onPressed: () { if (_formKey.currentState!.validate()) { final mockData = { "accountno": _selectedAccount?.accountNo ?? "50069506061", "customerfirstname": "TAMANA", "customermiddlename": "", "customerlastname": "", "availablebalance": "634000", "customerdob": "06061998", "emailid": "", "gender": "F", "married": "Y", "nomineename": "shubham Kada", "relationwithsubscriber": "S", "mobilenumber": "", "nomineeminor": "N", "customerno": "30028309887", "beneficaryofothersociatysecurityschemes": "N", "whetherincometaxpayer": "N", "customertitle": "02", "aadharno": "", "nameofspouse": "shubham kada", "ageofjoining": "27", "pensionamtoptedfor": "1000", "montlycontributioncalculate": "90", "collectionchannel": "1", "subsequentContributionDebitDate": "02012026", "secondnomineeminor": "N", "secondnomineename": "shubham kad", "secondrelationshipwithsubscriber": "", "pincode": "176215", "fatcacrsapplicable": "N", "countryofbirth": "India", "countryofcitizenship": "India", "countryofresidencefortaxpurpose": "India", "uspersonflag": "N", "fatcadeclarationcount": "", "documentevidencingcitizenshipflag": "", "reasonfornoevidence": "", "nameofdocumentforcitizenshipevidence": "", "modeofcollection": "Transfer Voucher", "contributionType": "C" }; Navigator.push( context, MaterialPageRoute( builder: (context) => APYRegisterScreen(initialData: mockData), ), ); } }, style: ElevatedButton.styleFrom( backgroundColor: Theme.of(context).colorScheme.primaryContainer, foregroundColor: Theme.of(context).colorScheme.onPrimaryContainer, minimumSize: const Size(double.infinity, 50), elevation: 4, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), ), ), child: Text( l10n.proceedButton, style: const TextStyle( fontSize: 16, fontWeight: FontWeight.bold), ), ), ], ), ), ), ); } }