150 lines
5.6 KiB
Dart
150 lines
5.6 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:kmobile/features/profile/change_password/change_password_screen.dart';
|
|
import 'package:kmobile/features/profile/tpin/change_tpin_screen.dart';
|
|
import 'package:kmobile/features/profile/change_mpin_screen.dart';
|
|
import 'package:kmobile/api/services/auth_service.dart';
|
|
import 'package:kmobile/features/fund_transfer/screens/tpin_set_screen.dart';
|
|
import 'package:kmobile/di/injection.dart';
|
|
import '../../l10n/app_localizations.dart';
|
|
|
|
class SecuritySettingsScreen extends StatelessWidget {
|
|
final String mobileNumber;
|
|
|
|
const SecuritySettingsScreen({super.key, required this.mobileNumber});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final loc = AppLocalizations.of(context);
|
|
|
|
return Scaffold(
|
|
appBar: AppBar(
|
|
title: Text(loc.securitySettings),
|
|
centerTitle: true,
|
|
),
|
|
body: Stack(
|
|
children: [
|
|
ListView(
|
|
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
|
|
children: [
|
|
Card(
|
|
margin: const EdgeInsets.only(bottom: 10),
|
|
child: ListTile(
|
|
leading: const Icon(Icons.lock_outline),
|
|
title: Text(loc.changeLoginPassword),
|
|
trailing: const Icon(Icons.chevron_right),
|
|
onTap: () {
|
|
Navigator.push(
|
|
context,
|
|
MaterialPageRoute(
|
|
builder: (context) => ChangePasswordScreen(
|
|
mobileNumber: mobileNumber,
|
|
),
|
|
),
|
|
);
|
|
},
|
|
),
|
|
),
|
|
Card(
|
|
margin: const EdgeInsets.only(bottom: 10),
|
|
child: ListTile(
|
|
leading: const Icon(Icons.pin),
|
|
title: Text(loc.changeMpin),
|
|
trailing: const Icon(Icons.chevron_right),
|
|
onTap: () async {
|
|
final result = await Navigator.push(
|
|
context,
|
|
MaterialPageRoute(
|
|
builder: (context) => const ChangeMpinScreen(),
|
|
),
|
|
);
|
|
|
|
if (result == true && context.mounted) {
|
|
ScaffoldMessenger.of(context).showSnackBar(
|
|
SnackBar(
|
|
content: Text(loc.mpinChangedSuccessfully),
|
|
backgroundColor:
|
|
Theme.of(context).colorScheme.secondary,
|
|
),
|
|
);
|
|
}
|
|
},
|
|
),
|
|
),
|
|
Card(
|
|
margin: const EdgeInsets.only(bottom: 10),
|
|
child: ListTile(
|
|
leading: const Icon(Icons.password),
|
|
title: const Text('Change TPIN'),
|
|
trailing: const Icon(Icons.chevron_right),
|
|
onTap: () async {
|
|
final authService = getIt<AuthService>();
|
|
final isTpinSet = await authService.checkTpin();
|
|
|
|
if (!isTpinSet) {
|
|
if (context.mounted) {
|
|
showDialog(
|
|
context: context,
|
|
builder: (BuildContext context) {
|
|
return AlertDialog(
|
|
title: const Text('TPIN Not Set'),
|
|
content: const Text(
|
|
'You have not set a TPIN yet. Please set a TPIN to proceed.'),
|
|
actions: <Widget>[
|
|
TextButton(
|
|
child: const Text('Back'),
|
|
onPressed: () {
|
|
Navigator.of(context).pop();
|
|
},
|
|
),
|
|
TextButton(
|
|
child: const Text('Proceed'),
|
|
onPressed: () {
|
|
Navigator.of(context).pop();
|
|
Navigator.of(context).push(
|
|
MaterialPageRoute(
|
|
builder: (context) =>
|
|
const TpinSetScreen(),
|
|
),
|
|
);
|
|
},
|
|
),
|
|
],
|
|
);
|
|
},
|
|
);
|
|
}
|
|
} else {
|
|
if (context.mounted) {
|
|
Navigator.of(context).push(
|
|
MaterialPageRoute(
|
|
builder: (context) =>
|
|
ChangeTpinScreen(mobileNumber: mobileNumber),
|
|
),
|
|
);
|
|
}
|
|
}
|
|
},
|
|
),
|
|
),
|
|
],
|
|
),
|
|
IgnorePointer(
|
|
child: Center(
|
|
child: Opacity(
|
|
opacity: 0.07, // Reduced opacity
|
|
child: ClipOval(
|
|
child: Image.asset(
|
|
'assets/images/logo.png',
|
|
width: 200, // Adjust size as needed
|
|
height: 200, // Adjust size as needed
|
|
),
|
|
),
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|