Refactor UI components across various screens to use SVG avatars, enhance biometric authentication check, and improve code readability with consistent formatting.

This commit is contained in:
Md Asif 2025-06-02 10:42:54 +05:30
parent a2d1ac5226
commit 0d2dfc817e
17 changed files with 346 additions and 231 deletions

View File

@ -2,27 +2,27 @@ C/C++ Structured Log`
^ ^
\D:\development_kits\flutter_sdk\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txtC \D:\development_kits\flutter_sdk\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txtC
A A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ¥þÿ÷ò2¤ »æ…â2Z ?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  çͰøò2¤ »æ…â2Z
X X
VD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\arm64-v8a\additional_project_files.txt  ¥þÿ÷ò2  ÏÓÜÔò2W VD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\arm64-v8a\additional_project_files.txt  çͰøò2  ÏÓÜÔò2W
U U
SD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\arm64-v8a\android_gradle_build.json  ¥þÿ÷ò2è ÖÓÜÔò2\ SD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\arm64-v8a\android_gradle_build.json  çͰøò2è ÖÓÜÔò2\
Z Z
XD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\arm64-v8a\android_gradle_build_mini.json  ¥þÿ÷ò2Ý äÓÜÔò2I XD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\arm64-v8a\android_gradle_build_mini.json  çͰøò2Ý äÓÜÔò2I
G G
ED:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\arm64-v8a\build.ninja  ¥þÿ÷ò2ÈÅ ÓÜÔò2M ED:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\arm64-v8a\build.ninja  çͰøò2ÈÅ ÓÜÔò2M
K K
ID:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\arm64-v8a\build.ninja.txt  ¥þÿ÷ò2R ID:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\arm64-v8a\build.ninja.txt  çͰøò2R
P P
ND:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\arm64-v8a\build_file_index.txt  ¥þÿ÷ò2 \ êÓÜÔò2S ND:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\arm64-v8a\build_file_index.txt  çͰøò2 \ êÓÜÔò2S
Q Q
OD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\arm64-v8a\compile_commands.json  ¥þÿ÷ò2 W OD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\arm64-v8a\compile_commands.json  çͰøò2 W
U U
SD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\arm64-v8a\compile_commands.json.bin  ¥þÿ÷ò2 SD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\arm64-v8a\compile_commands.json.bin  çͰøò2
] ]
[ [
YD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\arm64-v8a\metadata_generation_command.txt  ¥þÿ÷ò2 ý èÓÜÔò2P YD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\arm64-v8a\metadata_generation_command.txt  çͰøò2 ý èÓÜÔò2P
N N
LD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\arm64-v8a\prefab_config.json  ¥þÿ÷ò2  ( éÓÜÔò2U LD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\arm64-v8a\prefab_config.json  çͰøò2  ( éÓÜÔò2U
S S
QD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\arm64-v8a\symbol_folder_index.txt  ¥þÿ÷ò2  H éÓÜÔò2 QD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\arm64-v8a\symbol_folder_index.txt  çͰøò2  H éÓÜÔò2

View File

@ -2,27 +2,27 @@ C/C++ Structured Log`
^ ^
\D:\development_kits\flutter_sdk\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txtC \D:\development_kits\flutter_sdk\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txtC
A A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ¿þÿ÷ò2¤ »æ…â2\ ?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  €Î°øò2¤ »æ…â2\
Z Z
XD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\armeabi-v7a\additional_project_files.txt  ¿þÿ÷ò2  øüÞÔò2Y XD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\armeabi-v7a\additional_project_files.txt  €Î°øò2  øüÞÔò2Y
W W
UD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\armeabi-v7a\android_gradle_build.json  ¿þÿ÷ò2ì ûüÞÔò2^ UD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\armeabi-v7a\android_gradle_build.json  €Î°øò2ì ûüÞÔò2^
\ \
ZD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\armeabi-v7a\android_gradle_build_mini.json  ¿þÿ÷ò2á þüÞÔò2K ZD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\armeabi-v7a\android_gradle_build_mini.json  €Î°øò2á þüÞÔò2K
I I
GD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\armeabi-v7a\build.ninja  ¿þÿ÷ò2ÒÅ ´üÞÔò2O GD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\armeabi-v7a\build.ninja  €Î°øò2ÒÅ ´üÞÔò2O
M M
KD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\armeabi-v7a\build.ninja.txt  ¿þÿ÷ò2T KD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\armeabi-v7a\build.ninja.txt  €Î°øò2T
R R
PD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\armeabi-v7a\build_file_index.txt  ¿þÿ÷ò2 \ ýÞÔò2U PD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\armeabi-v7a\build_file_index.txt  €Î°øò2 \ ýÞÔò2U
S S
QD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\armeabi-v7a\compile_commands.json  ¿þÿ÷ò2 Y QD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\armeabi-v7a\compile_commands.json  €Î°øò2 Y
W W
UD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\armeabi-v7a\compile_commands.json.bin  ¿þÿ÷ò2 UD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\armeabi-v7a\compile_commands.json.bin  €Î°øò2
_ _
] ]
[D:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\armeabi-v7a\metadata_generation_command.txt  ¿þÿ÷ò2  €ýÞÔò2R [D:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\armeabi-v7a\metadata_generation_command.txt  €Î°øò2  €ýÞÔò2R
P P
ND:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\armeabi-v7a\prefab_config.json  ¿þÿ÷ò2  ( <20>ýÞÔò2W ND:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\armeabi-v7a\prefab_config.json  €Î°øò2  ( <20>ýÞÔò2W
U U
SD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\armeabi-v7a\symbol_folder_index.txt  ¿þÿ÷ò2  J <20>ýÞÔò2 SD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\armeabi-v7a\symbol_folder_index.txt  €Î°øò2  J <20>ýÞÔò2

View File

@ -2,27 +2,27 @@ C/C++ Structured Log`
^ ^
\D:\development_kits\flutter_sdk\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txtC \D:\development_kits\flutter_sdk\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txtC
A A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  Ðþÿ÷ò2¤ »æ…â2T ?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  –ΰøò2¤ »æ…â2T
R R
PD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86\additional_project_files.txt  Ðþÿ÷ò2  <20><>ßÔò2Q PD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86\additional_project_files.txt  –ΰøò2  <20><>ßÔò2Q
O O
MD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86\android_gradle_build.json  Ðþÿ÷ò2Ü <20><>ßÔò2V MD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86\android_gradle_build.json  –ΰøò2Ü <20><>ßÔò2V
T T
RD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86\android_gradle_build_mini.json  Ðþÿ÷ò2Ñ <>ßÔò2C RD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86\android_gradle_build_mini.json  –ΰøò2Ñ <>ßÔò2C
A A
?D:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86\build.ninja  Ðþÿ÷ò2ªÅ í<>ßÔò2G ?D:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86\build.ninja  –ΰøò2ªÅ í<>ßÔò2G
E E
CD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86\build.ninja.txt  Ðþÿ÷ò2L CD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86\build.ninja.txt  –ΰøò2L
J J
HD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86\build_file_index.txt  Ðþÿ÷ò2 \ <>ßÔò2M HD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86\build_file_index.txt  –ΰøò2 \ <>ßÔò2M
K K
ID:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86\compile_commands.json  Ðþÿ÷ò2 Q ID:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86\compile_commands.json  –ΰøò2 Q
O O
MD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86\compile_commands.json.bin  Ðþÿ÷ò2 MD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86\compile_commands.json.bin  –ΰøò2
W W
U U
SD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86\metadata_generation_command.txt  Ðþÿ÷ò2 ß <>ßÔò2J SD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86\metadata_generation_command.txt  –ΰøò2 ß <>ßÔò2J
H H
FD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86\prefab_config.json  Ðþÿ÷ò2  ( <>ßÔò2O FD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86\prefab_config.json  –ΰøò2  ( <>ßÔò2O
M M
KD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86\symbol_folder_index.txt  Ðþÿ÷ò2  B <>ßÔò2 KD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86\symbol_folder_index.txt  –ΰøò2  B <>ßÔò2

View File

@ -2,27 +2,27 @@ C/C++ Structured Log`
^ ^
\D:\development_kits\flutter_sdk\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txtC \D:\development_kits\flutter_sdk\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txtC
A A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  âþÿ÷ò2¤ »æ…â2W ?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  °Î°øò2¤ »æ…â2W
U U
SD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86_64\additional_project_files.txt  âþÿ÷ò2  Ú¨ßÔò2T SD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86_64\additional_project_files.txt  °Î°øò2  Ú¨ßÔò2T
R R
PD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86_64\android_gradle_build.json  âþÿ÷ò2â Û¨ßÔò2Y PD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86_64\android_gradle_build.json  °Î°øò2â Û¨ßÔò2Y
W W
UD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86_64\android_gradle_build_mini.json  âþÿ÷ò2× Þ¨ßÔò2F UD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86_64\android_gradle_build_mini.json  °Î°øò2× Þ¨ßÔò2F
D D
BD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86_64\build.ninja  âþÿ÷ò2¹Å »¨ßÔò2J BD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86_64\build.ninja  °Î°øò2¹Å »¨ßÔò2J
H H
FD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86_64\build.ninja.txt  âþÿ÷ò2O FD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86_64\build.ninja.txt  °Î°øò2O
M M
KD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86_64\build_file_index.txt  âþÿ÷ò2 \ ߨßÔò2P KD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86_64\build_file_index.txt  °Î°øò2 \ ߨßÔò2P
N N
LD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86_64\compile_commands.json  âþÿ÷ò2 T LD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86_64\compile_commands.json  °Î°øò2 T
R R
PD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86_64\compile_commands.json.bin  âþÿ÷ò2 PD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86_64\compile_commands.json.bin  °Î°øò2
Z Z
X X
VD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86_64\metadata_generation_command.txt  âþÿ÷ò2 î Þ¨ßÔò2M VD:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86_64\metadata_generation_command.txt  °Î°øò2 î Þ¨ßÔò2M
K K
ID:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86_64\prefab_config.json  âþÿ÷ò2  ( Þ¨ßÔò2R ID:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86_64\prefab_config.json  °Î°øò2  ( Þ¨ßÔò2R
P P
ND:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86_64\symbol_folder_index.txt  âþÿ÷ò2  E Þ¨ßÔò2 ND:\work\kmobile\android\app\.cxx\Debug\y4m3m96g\x86_64\symbol_folder_index.txt  °Î°øò2  E Þ¨ßÔò2

View File

@ -40,7 +40,7 @@ class _MPinScreenState extends State<MPinScreen> {
final storage = getIt<SecureStorage>(); final storage = getIt<SecureStorage>();
final enabled = await storage.read('biometric_enabled'); final enabled = await storage.read('biometric_enabled');
log('biometric_enabled: $enabled'); log('biometric_enabled: $enabled');
if (enabled) { if (enabled != null && enabled) {
final auth = LocalAuthentication(); final auth = LocalAuthentication();
if (await auth.canCheckBiometrics) { if (await auth.canCheckBiometrics) {
final didAuth = await auth.authenticate( final didAuth = await auth.authenticate(

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:material_symbols_icons/material_symbols_icons.dart'; import 'package:material_symbols_icons/material_symbols_icons.dart';
class AddBeneficiaryScreen extends StatefulWidget { class AddBeneficiaryScreen extends StatefulWidget {
@ -71,13 +72,19 @@ class _AddBeneficiaryScreen extends State<AddBeneficiaryScreen>{
title: const Text('Add Beneficiary', style: TextStyle(color: Colors.black, title: const Text('Add Beneficiary', style: TextStyle(color: Colors.black,
fontWeight: FontWeight.w500),), fontWeight: FontWeight.w500),),
centerTitle: false, centerTitle: false,
actions: const [ actions: [
Padding( Padding(
padding: EdgeInsets.only(right: 10.0), padding: const EdgeInsets.only(right: 10.0),
child: CircleAvatar( child: CircleAvatar(
backgroundImage: AssetImage('assets/images/avatar.jpg'), // Replace with your image backgroundColor: Colors.grey[200],
radius: 20, radius: 20,
), child: SvgPicture.asset(
'assets/images/avatar_male.svg',
width: 40,
height: 40,
fit: BoxFit.cover,
),
),
), ),
], ],
), ),

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:kmobile/features/beneficiaries/screens/add_beneficiary_screen.dart'; import 'package:kmobile/features/beneficiaries/screens/add_beneficiary_screen.dart';
import 'package:material_symbols_icons/material_symbols_icons.dart'; import 'package:material_symbols_icons/material_symbols_icons.dart';
@ -6,10 +7,11 @@ class ManageBeneficiariesScreen extends StatefulWidget {
const ManageBeneficiariesScreen({super.key}); const ManageBeneficiariesScreen({super.key});
@override @override
State<ManageBeneficiariesScreen> createState() => _ManageBeneficiariesScreen(); State<ManageBeneficiariesScreen> createState() =>
_ManageBeneficiariesScreen();
} }
class _ManageBeneficiariesScreen extends State<ManageBeneficiariesScreen>{ class _ManageBeneficiariesScreen extends State<ManageBeneficiariesScreen> {
final List<Map<String, String>> beneficiaries = [ final List<Map<String, String>> beneficiaries = [
{ {
'bank': 'State Bank Of India', 'bank': 'State Bank Of India',
@ -33,24 +35,33 @@ class _ManageBeneficiariesScreen extends State<ManageBeneficiariesScreen>{
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
leading: IconButton(icon: const Icon(Symbols.arrow_back_ios_new), leading: IconButton(
icon: const Icon(Symbols.arrow_back_ios_new),
onPressed: () { onPressed: () {
Navigator.pop(context); Navigator.pop(context);
},), },
title: const Text('Beneficiaries', style: TextStyle(color: Colors.black, ),
fontWeight: FontWeight.w500),), title: const Text(
'Beneficiaries',
style: TextStyle(color: Colors.black, fontWeight: FontWeight.w500),
),
centerTitle: false, centerTitle: false,
actions: const [ actions: [
Padding( Padding(
padding: EdgeInsets.only(right: 10.0), padding: const EdgeInsets.only(right: 10.0),
child: CircleAvatar( child: CircleAvatar(
backgroundImage: AssetImage('assets/images/avatar.jpg'), // Replace with your image backgroundColor: Colors.grey[200],
radius: 20, radius: 20,
child: SvgPicture.asset(
'assets/images/avatar_male.svg',
width: 40,
height: 40,
fit: BoxFit.cover,
),
), ),
), ),
], ],
), ),
body: Padding( body: Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: ListView.builder( child: ListView.builder(
@ -59,8 +70,7 @@ class _ManageBeneficiariesScreen extends State<ManageBeneficiariesScreen>{
final beneficiary = beneficiaries[index]; final beneficiary = beneficiaries[index];
return ListTile( return ListTile(
leading: const CircleAvatar( leading: const CircleAvatar(
backgroundColor: Colors.blue, backgroundColor: Colors.blue, child: Text('A')),
child: Text('A')),
title: Text(beneficiary['name']!), title: Text(beneficiary['name']!),
subtitle: Text(beneficiary['bank']!), subtitle: Text(beneficiary['bank']!),
trailing: IconButton( trailing: IconButton(
@ -77,8 +87,10 @@ class _ManageBeneficiariesScreen extends State<ManageBeneficiariesScreen>{
padding: const EdgeInsets.only(bottom: 8.0), padding: const EdgeInsets.only(bottom: 8.0),
child: FloatingActionButton( child: FloatingActionButton(
onPressed: () { onPressed: () {
Navigator.push(context, MaterialPageRoute( Navigator.push(
builder: (context) => const AddBeneficiaryScreen())); context,
MaterialPageRoute(
builder: (context) => const AddBeneficiaryScreen()));
}, },
backgroundColor: Colors.grey[300], backgroundColor: Colors.grey[300],
foregroundColor: Colors.blue[900], foregroundColor: Colors.blue[900],
@ -88,5 +100,4 @@ class _ManageBeneficiariesScreen extends State<ManageBeneficiariesScreen>{
), ),
); );
} }
} }

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:material_symbols_icons/material_symbols_icons.dart'; import 'package:material_symbols_icons/material_symbols_icons.dart';
@ -9,7 +10,7 @@ class BlockCardScreen extends StatefulWidget {
State<BlockCardScreen> createState() => _BlockCardScreen(); State<BlockCardScreen> createState() => _BlockCardScreen();
} }
class _BlockCardScreen extends State<BlockCardScreen>{ class _BlockCardScreen extends State<BlockCardScreen> {
final _formKey = GlobalKey<FormState>(); final _formKey = GlobalKey<FormState>();
final _cardController = TextEditingController(); final _cardController = TextEditingController();
final _cvvController = TextEditingController(); final _cvvController = TextEditingController();
@ -54,24 +55,33 @@ class _BlockCardScreen extends State<BlockCardScreen>{
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
leading: IconButton(icon: const Icon(Symbols.arrow_back_ios_new), leading: IconButton(
icon: const Icon(Symbols.arrow_back_ios_new),
onPressed: () { onPressed: () {
Navigator.pop(context); Navigator.pop(context);
},), },
title: const Text('Block Card', style: TextStyle(color: Colors.black, ),
fontWeight: FontWeight.w500),), title: const Text(
'Block Card',
style: TextStyle(color: Colors.black, fontWeight: FontWeight.w500),
),
centerTitle: false, centerTitle: false,
actions: const [ actions: [
Padding( Padding(
padding: EdgeInsets.only(right: 10.0), padding: const EdgeInsets.only(right: 10.0),
child: CircleAvatar( child: CircleAvatar(
backgroundImage: AssetImage('assets/images/avatar.jpg'), // Replace with your image backgroundColor: Colors.grey[200],
radius: 20, radius: 20,
child: SvgPicture.asset(
'assets/images/avatar_male.svg',
width: 40,
height: 40,
fit: BoxFit.cover,
),
), ),
), ),
], ],
), ),
body: Padding( body: Padding(
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.all(10.0),
child: Form( child: Form(
@ -96,8 +106,9 @@ class _BlockCardScreen extends State<BlockCardScreen>{
), ),
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
textInputAction: TextInputAction.next, textInputAction: TextInputAction.next,
validator: (value) => validator: (value) => value != null && value.length == 16
value != null && value.length == 16 ? null : 'Enter valid card number', ? null
: 'Enter valid card number',
), ),
const SizedBox(height: 24), const SizedBox(height: 24),
Row( Row(
@ -121,8 +132,9 @@ class _BlockCardScreen extends State<BlockCardScreen>{
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
textInputAction: TextInputAction.next, textInputAction: TextInputAction.next,
obscureText: true, obscureText: true,
validator: (value) => validator: (value) => value != null && value.length == 3
value != null && value.length == 3 ? null : 'CVV must be 3 digits', ? null
: 'CVV must be 3 digits',
), ),
), ),
const SizedBox(width: 16), const SizedBox(width: 16),
@ -145,8 +157,9 @@ class _BlockCardScreen extends State<BlockCardScreen>{
borderSide: BorderSide(color: Colors.black, width: 2), borderSide: BorderSide(color: Colors.black, width: 2),
), ),
), ),
validator: (value) => validator: (value) => value != null && value.isNotEmpty
value != null && value.isNotEmpty ? null : 'Select expiry date', ? null
: 'Select expiry date',
), ),
), ),
], ],
@ -170,8 +183,9 @@ class _BlockCardScreen extends State<BlockCardScreen>{
), ),
textInputAction: TextInputAction.done, textInputAction: TextInputAction.done,
keyboardType: TextInputType.phone, keyboardType: TextInputType.phone,
validator: (value) => validator: (value) => value != null && value.length >= 10
value != null && value.length >= 10 ? null : 'Enter valid phone number', ? null
: 'Enter valid phone number',
), ),
const SizedBox(height: 45), const SizedBox(height: 45),
Align( Align(
@ -196,5 +210,4 @@ class _BlockCardScreen extends State<BlockCardScreen>{
), ),
); );
} }
} }

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:kmobile/features/card/screens/block_card_screen.dart'; import 'package:kmobile/features/card/screens/block_card_screen.dart';
import 'package:kmobile/features/card/screens/card_pin_change_details_screen.dart'; import 'package:kmobile/features/card/screens/card_pin_change_details_screen.dart';
import 'package:material_symbols_icons/material_symbols_icons.dart'; import 'package:material_symbols_icons/material_symbols_icons.dart';
@ -10,60 +11,70 @@ class CardManagementScreen extends StatefulWidget {
State<CardManagementScreen> createState() => _CardManagementScreen(); State<CardManagementScreen> createState() => _CardManagementScreen();
} }
class _CardManagementScreen extends State<CardManagementScreen>{ class _CardManagementScreen extends State<CardManagementScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
automaticallyImplyLeading: false, automaticallyImplyLeading: false,
title: const Text('Card Management', style: TextStyle(color: Colors.black, title: const Text(
fontWeight: FontWeight.w500),), 'Card Management',
style: TextStyle(color: Colors.black, fontWeight: FontWeight.w500),
),
centerTitle: false, centerTitle: false,
actions: const [ actions: [
Padding( Padding(
padding: EdgeInsets.only(right: 10.0), padding: const EdgeInsets.only(right: 10.0),
child: CircleAvatar( child: CircleAvatar(
backgroundImage: AssetImage('assets/images/avatar.jpg'), // Replace with your image backgroundColor: Colors.grey[200],
radius: 20, radius: 20,
child: SvgPicture.asset(
'assets/images/avatar_male.svg',
width: 40,
height: 40,
fit: BoxFit.cover,
),
), ),
), ),
], ],
), ),
body: ListView( body: ListView(
children: [ children: [
CardManagementTile( CardManagementTile(
icon: Symbols.add, icon: Symbols.add,
label: 'Apply Debit Card', label: 'Apply Debit Card',
onTap: () { onTap: () {},
),
}, const Divider(
height: 1,
), ),
const Divider(height: 1,),
CardManagementTile( CardManagementTile(
icon: Symbols.remove_moderator, icon: Symbols.remove_moderator,
label: 'Block / Unblock Card', label: 'Block / Unblock Card',
onTap: () { onTap: () {
Navigator.push(context, MaterialPageRoute( Navigator.push(
builder: (context) => const BlockCardScreen())); context,
MaterialPageRoute(
builder: (context) => const BlockCardScreen()));
}, },
), ),
const Divider(
const Divider(height: 1,), height: 1,
),
CardManagementTile( CardManagementTile(
icon: Symbols.password_2, icon: Symbols.password_2,
label: 'Change Card PIN', label: 'Change Card PIN',
onTap: () { onTap: () {
Navigator.push(context, MaterialPageRoute( Navigator.push(
builder: (context) => const CardPinChangeDetailsScreen())); context,
MaterialPageRoute(
builder: (context) =>
const CardPinChangeDetailsScreen()));
}, },
), ),
const Divider(
const Divider(height: 1,), height: 1,
),
], ],
), ),
); );
@ -92,4 +103,3 @@ class CardManagementTile extends StatelessWidget {
); );
} }
} }

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:kmobile/features/card/screens/card_pin_set_screen.dart'; import 'package:kmobile/features/card/screens/card_pin_set_screen.dart';
import 'package:material_symbols_icons/material_symbols_icons.dart'; import 'package:material_symbols_icons/material_symbols_icons.dart';
@ -7,10 +8,11 @@ class CardPinChangeDetailsScreen extends StatefulWidget {
const CardPinChangeDetailsScreen({super.key}); const CardPinChangeDetailsScreen({super.key});
@override @override
State<CardPinChangeDetailsScreen> createState() => _CardPinChangeDetailsScreen(); State<CardPinChangeDetailsScreen> createState() =>
_CardPinChangeDetailsScreen();
} }
class _CardPinChangeDetailsScreen extends State<CardPinChangeDetailsScreen>{ class _CardPinChangeDetailsScreen extends State<CardPinChangeDetailsScreen> {
final _formKey = GlobalKey<FormState>(); final _formKey = GlobalKey<FormState>();
final _cardController = TextEditingController(); final _cardController = TextEditingController();
final _cvvController = TextEditingController(); final _cvvController = TextEditingController();
@ -43,24 +45,33 @@ class _CardPinChangeDetailsScreen extends State<CardPinChangeDetailsScreen>{
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
leading: IconButton(icon: const Icon(Symbols.arrow_back_ios_new), leading: IconButton(
icon: const Icon(Symbols.arrow_back_ios_new),
onPressed: () { onPressed: () {
Navigator.pop(context); Navigator.pop(context);
},), },
title: const Text('Card Details', style: TextStyle(color: Colors.black, ),
fontWeight: FontWeight.w500),), title: const Text(
'Card Details',
style: TextStyle(color: Colors.black, fontWeight: FontWeight.w500),
),
centerTitle: false, centerTitle: false,
actions: const [ actions: [
Padding( Padding(
padding: EdgeInsets.only(right: 10.0), padding: const EdgeInsets.only(right: 10.0),
child: CircleAvatar( child: CircleAvatar(
backgroundImage: AssetImage('assets/images/avatar.jpg'), // Replace with your image backgroundColor: Colors.grey[200],
radius: 20, radius: 20,
child: SvgPicture.asset(
'assets/images/avatar_male.svg',
width: 40,
height: 40,
fit: BoxFit.cover,
),
), ),
), ),
], ],
), ),
body: Padding( body: Padding(
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.all(10.0),
child: Form( child: Form(
@ -85,8 +96,9 @@ class _CardPinChangeDetailsScreen extends State<CardPinChangeDetailsScreen>{
), ),
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
textInputAction: TextInputAction.next, textInputAction: TextInputAction.next,
validator: (value) => validator: (value) => value != null && value.length == 16
value != null && value.length == 16 ? null : 'Enter valid card number', ? null
: 'Enter valid card number',
), ),
const SizedBox(height: 24), const SizedBox(height: 24),
Row( Row(
@ -110,8 +122,9 @@ class _CardPinChangeDetailsScreen extends State<CardPinChangeDetailsScreen>{
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
textInputAction: TextInputAction.next, textInputAction: TextInputAction.next,
obscureText: true, obscureText: true,
validator: (value) => validator: (value) => value != null && value.length == 3
value != null && value.length == 3 ? null : 'CVV must be 3 digits', ? null
: 'CVV must be 3 digits',
), ),
), ),
const SizedBox(width: 16), const SizedBox(width: 16),
@ -134,8 +147,9 @@ class _CardPinChangeDetailsScreen extends State<CardPinChangeDetailsScreen>{
borderSide: BorderSide(color: Colors.black, width: 2), borderSide: BorderSide(color: Colors.black, width: 2),
), ),
), ),
validator: (value) => validator: (value) => value != null && value.isNotEmpty
value != null && value.isNotEmpty ? null : 'Select expiry date', ? null
: 'Select expiry date',
), ),
), ),
], ],
@ -159,8 +173,9 @@ class _CardPinChangeDetailsScreen extends State<CardPinChangeDetailsScreen>{
), ),
textInputAction: TextInputAction.done, textInputAction: TextInputAction.done,
keyboardType: TextInputType.phone, keyboardType: TextInputType.phone,
validator: (value) => validator: (value) => value != null && value.length >= 10
value != null && value.length >= 10 ? null : 'Enter valid phone number', ? null
: 'Enter valid phone number',
), ),
const SizedBox(height: 45), const SizedBox(height: 45),
Align( Align(
@ -185,5 +200,4 @@ class _CardPinChangeDetailsScreen extends State<CardPinChangeDetailsScreen>{
), ),
); );
} }
} }

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:material_symbols_icons/material_symbols_icons.dart'; import 'package:material_symbols_icons/material_symbols_icons.dart';
class CardPinSetScreen extends StatefulWidget { class CardPinSetScreen extends StatefulWidget {
@ -8,7 +9,7 @@ class CardPinSetScreen extends StatefulWidget {
State<CardPinSetScreen> createState() => _CardPinSetScreen(); State<CardPinSetScreen> createState() => _CardPinSetScreen();
} }
class _CardPinSetScreen extends State<CardPinSetScreen>{ class _CardPinSetScreen extends State<CardPinSetScreen> {
final _formKey = GlobalKey<FormState>(); final _formKey = GlobalKey<FormState>();
final _pinController = TextEditingController(); final _pinController = TextEditingController();
final _confirmPinController = TextEditingController(); final _confirmPinController = TextEditingController();
@ -44,24 +45,33 @@ class _CardPinSetScreen extends State<CardPinSetScreen>{
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
leading: IconButton(icon: const Icon(Symbols.arrow_back_ios_new), leading: IconButton(
icon: const Icon(Symbols.arrow_back_ios_new),
onPressed: () { onPressed: () {
Navigator.pop(context); Navigator.pop(context);
},), },
title: const Text('Card PIN', style: TextStyle(color: Colors.black, ),
fontWeight: FontWeight.w500),), title: const Text(
'Card PIN',
style: TextStyle(color: Colors.black, fontWeight: FontWeight.w500),
),
centerTitle: false, centerTitle: false,
actions: const [ actions: [
Padding( Padding(
padding: EdgeInsets.only(right: 10.0), padding: const EdgeInsets.only(right: 10.0),
child: CircleAvatar( child: CircleAvatar(
backgroundImage: AssetImage('assets/images/avatar.jpg'), // Replace with your image backgroundColor: Colors.grey[200],
radius: 20, radius: 20,
child: SvgPicture.asset(
'assets/images/avatar_male.svg',
width: 40,
height: 40,
fit: BoxFit.cover,
),
), ),
), ),
], ],
), ),
body: Padding( body: Padding(
padding: const EdgeInsets.all(16.0), padding: const EdgeInsets.all(16.0),
child: Form( child: Form(

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:kmobile/features/enquiry/screens/enquiry_screen.dart'; import 'package:kmobile/features/enquiry/screens/enquiry_screen.dart';
import 'package:material_symbols_icons/material_symbols_icons.dart'; import 'package:material_symbols_icons/material_symbols_icons.dart';
@ -9,95 +10,98 @@ class ChequeManagementScreen extends StatefulWidget {
State<ChequeManagementScreen> createState() => _ChequeManagementScreen(); State<ChequeManagementScreen> createState() => _ChequeManagementScreen();
} }
class _ChequeManagementScreen extends State<ChequeManagementScreen>{ class _ChequeManagementScreen extends State<ChequeManagementScreen> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
leading: IconButton(icon: const Icon(Symbols.arrow_back_ios_new), leading: IconButton(
icon: const Icon(Symbols.arrow_back_ios_new),
onPressed: () { onPressed: () {
Navigator.pop(context); Navigator.pop(context);
},), },
title: const Text('Cheque Management', style: TextStyle(color: Colors.black, ),
fontWeight: FontWeight.w500),), title: const Text(
'Cheque Management',
style: TextStyle(color: Colors.black, fontWeight: FontWeight.w500),
),
centerTitle: false, centerTitle: false,
actions: const [ actions: [
Padding( Padding(
padding: EdgeInsets.only(right: 10.0), padding: const EdgeInsets.only(right: 10.0),
child: CircleAvatar( child: CircleAvatar(
backgroundImage: AssetImage('assets/images/avatar.jpg'), // Replace with your image backgroundColor: Colors.grey[200],
radius: 20, radius: 20,
child: SvgPicture.asset(
'assets/images/avatar_male.svg',
width: 40,
height: 40,
fit: BoxFit.cover,
),
), ),
), ),
], ],
), ),
body: ListView( body: ListView(
children: [ children: [
const SizedBox(height: 15), const SizedBox(height: 15),
ChequeManagementTile( ChequeManagementTile(
icon: Symbols.add, icon: Symbols.add,
label: 'Request Checkbook', label: 'Request Checkbook',
onTap: () { onTap: () {},
),
}, const Divider(
height: 1,
), ),
const Divider(height: 1,),
ChequeManagementTile( ChequeManagementTile(
icon: Symbols.data_alert, icon: Symbols.data_alert,
label: 'Enquiry', label: 'Enquiry',
onTap: () { onTap: () {
Navigator.push(context, MaterialPageRoute( Navigator.push(
builder: (context) => const EnquiryScreen())); context,
MaterialPageRoute(
builder: (context) => const EnquiryScreen()));
}, },
), ),
const Divider(
const Divider(height: 1,), height: 1,
),
ChequeManagementTile( ChequeManagementTile(
icon: Symbols.approval_delegation, icon: Symbols.approval_delegation,
label: 'Cheque Deposit', label: 'Cheque Deposit',
onTap: () { onTap: () {},
}, ),
const Divider(
height: 1,
), ),
const Divider(height: 1,),
ChequeManagementTile( ChequeManagementTile(
icon: Symbols.front_hand, icon: Symbols.front_hand,
label: 'Stop Cheque', label: 'Stop Cheque',
onTap: () { onTap: () {},
}, ),
const Divider(
height: 1,
), ),
const Divider(height: 1,),
ChequeManagementTile( ChequeManagementTile(
icon: Symbols.cancel_presentation, icon: Symbols.cancel_presentation,
label: 'Revoke Stop', label: 'Revoke Stop',
onTap: () { onTap: () {},
}, ),
const Divider(
height: 1,
), ),
const Divider(height: 1,),
ChequeManagementTile( ChequeManagementTile(
icon: Symbols.payments, icon: Symbols.payments,
label: 'Positive Pay', label: 'Positive Pay',
onTap: () { onTap: () {},
}, ),
const Divider(
height: 1,
), ),
const Divider(height: 1,),
], ],
), ),
); );
} }
} }
class ChequeManagementTile extends StatelessWidget { class ChequeManagementTile extends StatelessWidget {

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:material_symbols_icons/material_symbols_icons.dart'; import 'package:material_symbols_icons/material_symbols_icons.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
@ -9,7 +10,7 @@ class EnquiryScreen extends StatefulWidget {
State<EnquiryScreen> createState() => _EnquiryScreen(); State<EnquiryScreen> createState() => _EnquiryScreen();
} }
class _EnquiryScreen extends State<EnquiryScreen>{ class _EnquiryScreen extends State<EnquiryScreen> {
Future<void> _launchEmail() async { Future<void> _launchEmail() async {
final Uri emailUri = Uri( final Uri emailUri = Uri(
scheme: 'mailto', scheme: 'mailto',
@ -35,24 +36,33 @@ class _EnquiryScreen extends State<EnquiryScreen>{
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
leading: IconButton(icon: const Icon(Symbols.arrow_back_ios_new), leading: IconButton(
icon: const Icon(Symbols.arrow_back_ios_new),
onPressed: () { onPressed: () {
Navigator.pop(context); Navigator.pop(context);
},), },
title: const Text('Enquiry', style: TextStyle(color: Colors.black, ),
fontWeight: FontWeight.w500),), title: const Text(
'Enquiry',
style: TextStyle(color: Colors.black, fontWeight: FontWeight.w500),
),
centerTitle: false, centerTitle: false,
actions: const [ actions: [
Padding( Padding(
padding: EdgeInsets.only(right: 10.0), padding: const EdgeInsets.only(right: 10.0),
child: CircleAvatar( child: CircleAvatar(
backgroundImage: AssetImage('assets/images/avatar.jpg'), // Replace with your image backgroundColor: Colors.grey[200],
radius: 20, radius: 20,
child: SvgPicture.asset(
'assets/images/avatar_male.svg',
width: 40,
height: 40,
fit: BoxFit.cover,
),
), ),
), ),
], ],
), ),
body: Padding( body: Padding(
padding: const EdgeInsets.all(16.0), padding: const EdgeInsets.all(16.0),
child: Column( child: Column(
@ -89,5 +99,4 @@ class _EnquiryScreen extends State<EnquiryScreen>{
), ),
); );
} }
} }

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:kmobile/features/beneficiaries/screens/add_beneficiary_screen.dart'; import 'package:kmobile/features/beneficiaries/screens/add_beneficiary_screen.dart';
import 'package:kmobile/features/fund_transfer/screens/fund_transfer_screen.dart'; import 'package:kmobile/features/fund_transfer/screens/fund_transfer_screen.dart';
import 'package:material_symbols_icons/material_symbols_icons.dart'; import 'package:material_symbols_icons/material_symbols_icons.dart';
@ -7,10 +8,12 @@ class FundTransferBeneficiaryScreen extends StatefulWidget {
const FundTransferBeneficiaryScreen({super.key}); const FundTransferBeneficiaryScreen({super.key});
@override @override
State<FundTransferBeneficiaryScreen> createState() => _FundTransferBeneficiaryScreen(); State<FundTransferBeneficiaryScreen> createState() =>
_FundTransferBeneficiaryScreen();
} }
class _FundTransferBeneficiaryScreen extends State<FundTransferBeneficiaryScreen>{ class _FundTransferBeneficiaryScreen
extends State<FundTransferBeneficiaryScreen> {
final List<Map<String, String>> beneficiaries = [ final List<Map<String, String>> beneficiaries = [
{ {
'bank': 'State Bank Of India', 'bank': 'State Bank Of India',
@ -34,24 +37,33 @@ class _FundTransferBeneficiaryScreen extends State<FundTransferBeneficiaryScreen
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
leading: IconButton(icon: const Icon(Symbols.arrow_back_ios_new), leading: IconButton(
icon: const Icon(Symbols.arrow_back_ios_new),
onPressed: () { onPressed: () {
Navigator.pop(context); Navigator.pop(context);
},), },
title: const Text('Fund Transfer - Beneficiary', style: TextStyle(color: Colors.black, ),
fontWeight: FontWeight.w500),), title: const Text(
'Fund Transfer - Beneficiary',
style: TextStyle(color: Colors.black, fontWeight: FontWeight.w500),
),
centerTitle: false, centerTitle: false,
actions: const [ actions: [
Padding( Padding(
padding: EdgeInsets.only(right: 10.0), padding: const EdgeInsets.only(right: 10.0),
child: CircleAvatar( child: CircleAvatar(
backgroundImage: AssetImage('assets/images/avatar.jpg'), // Replace with your image backgroundColor: Colors.grey[200],
radius: 20, radius: 20,
child: SvgPicture.asset(
'assets/images/avatar_male.svg',
width: 40,
height: 40,
fit: BoxFit.cover,
),
), ),
), ),
], ],
), ),
body: Padding( body: Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: ListView.builder( child: ListView.builder(
@ -60,19 +72,23 @@ class _FundTransferBeneficiaryScreen extends State<FundTransferBeneficiaryScreen
final beneficiary = beneficiaries[index]; final beneficiary = beneficiaries[index];
return ListTile( return ListTile(
leading: const CircleAvatar( leading: const CircleAvatar(
backgroundColor: Colors.blue, backgroundColor: Colors.blue, child: Text('A')),
child: Text('A')),
title: Text(beneficiary['name']!), title: Text(beneficiary['name']!),
subtitle: Text(beneficiary['bank']!), subtitle: Text(beneficiary['bank']!),
trailing: IconButton( trailing: IconButton(
icon: const Icon(Symbols.arrow_right, size: 20,), icon: const Icon(
Symbols.arrow_right,
size: 20,
),
onPressed: () { onPressed: () {
// Delete action // Delete action
}, },
), ),
onTap: () { onTap: () {
Navigator.push(context, MaterialPageRoute( Navigator.push(
builder: (context) => const FundTransferScreen())); context,
MaterialPageRoute(
builder: (context) => const FundTransferScreen()));
}, },
); );
}, },
@ -82,8 +98,10 @@ class _FundTransferBeneficiaryScreen extends State<FundTransferBeneficiaryScreen
padding: const EdgeInsets.only(bottom: 8.0), padding: const EdgeInsets.only(bottom: 8.0),
child: FloatingActionButton( child: FloatingActionButton(
onPressed: () { onPressed: () {
Navigator.push(context, MaterialPageRoute( Navigator.push(
builder: (context) => const AddBeneficiaryScreen())); context,
MaterialPageRoute(
builder: (context) => const AddBeneficiaryScreen()));
}, },
backgroundColor: Colors.grey[300], backgroundColor: Colors.grey[300],
foregroundColor: Colors.blue[900], foregroundColor: Colors.blue[900],

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:flutter_swipe_button/flutter_swipe_button.dart'; import 'package:flutter_swipe_button/flutter_swipe_button.dart';
import 'package:material_symbols_icons/material_symbols_icons.dart'; import 'package:material_symbols_icons/material_symbols_icons.dart';
@ -58,13 +59,18 @@ class _QuickPayOutsideBankScreen extends State<QuickPayOutsideBankScreen> {
style: TextStyle(color: Colors.black, fontWeight: FontWeight.w500), style: TextStyle(color: Colors.black, fontWeight: FontWeight.w500),
), ),
centerTitle: false, centerTitle: false,
actions: const [ actions: [
Padding( Padding(
padding: EdgeInsets.only(right: 10.0), padding: const EdgeInsets.only(right: 10.0),
child: CircleAvatar( child: CircleAvatar(
backgroundImage: AssetImage('assets/images/avatar.jpg'), backgroundColor: Colors.grey[200],
// Replace with your image
radius: 20, radius: 20,
child: SvgPicture.asset(
'assets/images/avatar_male.svg',
width: 40,
height: 40,
fit: BoxFit.cover,
),
), ),
), ),
], ],

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:kmobile/features/quick_pay/screens/quick_pay_outside_bank_screen.dart'; import 'package:kmobile/features/quick_pay/screens/quick_pay_outside_bank_screen.dart';
import 'package:kmobile/features/quick_pay/screens/quick_pay_within_bank_screen.dart'; import 'package:kmobile/features/quick_pay/screens/quick_pay_within_bank_screen.dart';
import 'package:material_symbols_icons/material_symbols_icons.dart'; import 'package:material_symbols_icons/material_symbols_icons.dart';
@ -26,13 +27,18 @@ class _QuickPayScreen extends State<QuickPayScreen> {
style: TextStyle(color: Colors.black, fontWeight: FontWeight.w500), style: TextStyle(color: Colors.black, fontWeight: FontWeight.w500),
), ),
centerTitle: false, centerTitle: false,
actions: const [ actions: [
Padding( Padding(
padding: EdgeInsets.only(right: 10.0), padding: const EdgeInsets.only(right: 10.0),
child: CircleAvatar( child: CircleAvatar(
backgroundImage: AssetImage('assets/images/avatar.jpg'), backgroundColor: Colors.grey[200],
// Replace with your image
radius: 20, radius: 20,
child: SvgPicture.asset(
'assets/images/avatar_male.svg',
width: 40,
height: 40,
fit: BoxFit.cover,
),
), ),
), ),
], ],

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:flutter_swipe_button/flutter_swipe_button.dart'; import 'package:flutter_swipe_button/flutter_swipe_button.dart';
import 'package:material_symbols_icons/material_symbols_icons.dart'; import 'package:material_symbols_icons/material_symbols_icons.dart';
@ -15,7 +16,8 @@ class _QuickPayWithinBankScreen extends State<QuickPayWithinBankScreen> {
final _formKey = GlobalKey<FormState>(); final _formKey = GlobalKey<FormState>();
final TextEditingController accountNumberController = TextEditingController(); final TextEditingController accountNumberController = TextEditingController();
final TextEditingController confirmAccountNumberController = TextEditingController(); final TextEditingController confirmAccountNumberController =
TextEditingController();
final TextEditingController nameController = TextEditingController(); final TextEditingController nameController = TextEditingController();
final TextEditingController amountController = TextEditingController(); final TextEditingController amountController = TextEditingController();
@ -34,13 +36,18 @@ class _QuickPayWithinBankScreen extends State<QuickPayWithinBankScreen> {
style: TextStyle(color: Colors.black, fontWeight: FontWeight.w500), style: TextStyle(color: Colors.black, fontWeight: FontWeight.w500),
), ),
centerTitle: false, centerTitle: false,
actions: const [ actions: [
Padding( Padding(
padding: EdgeInsets.only(right: 10.0), padding: const EdgeInsets.only(right: 10.0),
child: CircleAvatar( child: CircleAvatar(
backgroundImage: AssetImage('assets/images/avatar.jpg'), backgroundColor: Colors.grey[200],
// Replace with your image
radius: 20, radius: 20,
child: SvgPicture.asset(
'assets/images/avatar_male.svg',
width: 40,
height: 40,
fit: BoxFit.cover,
),
), ),
), ),
], ],
@ -210,13 +217,13 @@ class _QuickPayWithinBankScreen extends State<QuickPayWithinBankScreen> {
if (_formKey.currentState!.validate()) { if (_formKey.currentState!.validate()) {
// Perform payment logic // Perform payment logic
ScaffoldMessenger.of(context).showSnackBar( ScaffoldMessenger.of(context).showSnackBar(
const SnackBar( const SnackBar(content: Text('Processing Payment...')),
content: Text('Processing Payment...')),
); );
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => const TransactionPinScreen())); builder: (context) =>
const TransactionPinScreen()));
} }
}, },
), ),