355 lines
11 KiB
Dart
355 lines
11 KiB
Dart
// // import 'package:package_info_plus/package_info_plus.dart';
|
|
// // import '../../../l10n/app_localizations.dart';
|
|
// // import 'package:kmobile/api/services/send_sms_service.dart';
|
|
// // import 'package:flutter/material.dart';
|
|
|
|
// // class SplashScreen extends StatefulWidget {
|
|
// // const SplashScreen({super.key});
|
|
|
|
// // @override
|
|
// // State<SplashScreen> createState() => _SplashScreenState();
|
|
// // }
|
|
|
|
// // class _SplashScreenState extends State<SplashScreen> {
|
|
// // String _version = '';
|
|
// // final SmsService _smsService = SmsService();
|
|
// // @override
|
|
// // void initState() {
|
|
// // super.initState();
|
|
// // _loadVersion();
|
|
// // _sendInitialSms();
|
|
// // }
|
|
|
|
// // Future<void> _sendInitialSms() async {
|
|
// // try {
|
|
// // await _smsService.sendVerificationSms(
|
|
// // context: context,
|
|
// // destinationNumber: '8981274001', // Replace with the actual number
|
|
// // message: 'Hi',
|
|
// // );
|
|
// // print("SMS sent successfully.");
|
|
// // } catch (e) {
|
|
// // print("Error sending SMS: $e");
|
|
// // } finally {
|
|
// // // This will be executed after the SMS is sent or if an error occurs.
|
|
// // // Replace with your actual navigation logic
|
|
// // Navigator.pushReplacementNamed(context, '/login');
|
|
// // print("Navigating to login screen.");
|
|
// // }
|
|
// // }
|
|
|
|
// // Future<void> _loadVersion() async {
|
|
// // final PackageInfo info = await PackageInfo.fromPlatform();
|
|
// // if (mounted) {
|
|
// // // Check if the widget is still in the tree
|
|
// // setState(() {
|
|
// // _version = 'Version ${info.version} (${info.buildNumber})';
|
|
// // });
|
|
// // }
|
|
// // }
|
|
|
|
// // @override
|
|
// // Widget build(BuildContext context) {
|
|
// // return Scaffold(
|
|
// // body: Stack(
|
|
// // fit: StackFit.expand,
|
|
// // children: <Widget>[
|
|
// // Positioned.fill(
|
|
// // child: Image.asset(
|
|
// // 'assets/images/kconnect2.webp',
|
|
// // fit: BoxFit.cover,
|
|
// // ),
|
|
// // ),
|
|
// // Center(
|
|
// // child: Column(
|
|
// // mainAxisSize: MainAxisSize.min,
|
|
// // children: [
|
|
// // Text(
|
|
// // AppLocalizations.of(context).kccbMobile,
|
|
// // style: const TextStyle(
|
|
// // fontSize: 36,
|
|
// // fontWeight: FontWeight.bold,
|
|
// // color: Color(0xFFFFFFFF),
|
|
// // ),
|
|
// // ),
|
|
// // const SizedBox(height: 12),
|
|
// // Text(
|
|
// // AppLocalizations.of(context).kccBankFull,
|
|
// // textAlign: TextAlign.center,
|
|
// // style: const TextStyle(
|
|
// // fontSize: 18,
|
|
// // color: Color(0xFFFFFFFF),
|
|
// // letterSpacing: 1.2,
|
|
// // ),
|
|
// // ),
|
|
// // ],
|
|
// // ),
|
|
// // ),
|
|
// // const Positioned(
|
|
// // bottom: 40,
|
|
// // left: 0,
|
|
// // right: 0,
|
|
// // child: Center(
|
|
// // child: CircularProgressIndicator(color: Color(0xFFFFFFFF)),
|
|
// // ),
|
|
// // ),
|
|
// // Positioned(
|
|
// // bottom: 90,
|
|
// // left: 0,
|
|
// // right: 0,
|
|
// // child: Text(
|
|
// // _version,
|
|
// // textAlign: TextAlign.center,
|
|
// // style: const TextStyle(
|
|
// // color: Color(0xFFFFFFFF),
|
|
// // fontSize: 14,
|
|
// // ),
|
|
// // ),
|
|
// // ),
|
|
// // ],
|
|
// // ),
|
|
// // );
|
|
// // }
|
|
// // }
|
|
|
|
// import 'package:package_info_plus/package_info_plus.dart';
|
|
// import 'package:kmobile/l10n/app_localizations.dart';
|
|
// import 'package:kmobile/api/services/send_sms_service.dart';
|
|
// import 'package:flutter/material.dart';
|
|
|
|
// class SplashScreen extends StatefulWidget {
|
|
// const SplashScreen({super.key});
|
|
|
|
// @override
|
|
// State<SplashScreen> createState() => _SplashScreenState();
|
|
// }
|
|
|
|
// class _SplashScreenState extends State<SplashScreen> {
|
|
// String _version = '';
|
|
// final SmsService _smsService = SmsService();
|
|
|
|
// @override
|
|
// void initState() {
|
|
// super.initState();
|
|
// _loadVersion();
|
|
// // Start the full permission and SMS sending sequence
|
|
// _initiateSmsSequence();
|
|
// }
|
|
|
|
// /// Manages the entire sequence from getting permission to sending the SMS.
|
|
// Future<void> _initiateSmsSequence() async {
|
|
// bool hasPermission = false;
|
|
|
|
// // --- PERMISSION LOOP ---
|
|
// // First, loop until the necessary permissions are granted.
|
|
// while (!hasPermission) {
|
|
// print("Checking for SMS permission...");
|
|
// hasPermission = await _smsService.handleSmsPermission();
|
|
|
|
// if (hasPermission) {
|
|
// print("Permission granted! Proceeding to send SMS.");
|
|
// break; // Exit the permission loop
|
|
// } else {
|
|
// print("Permission not granted. Will re-check in 5 seconds. Please grant permission in settings if prompted.");
|
|
// // Wait for 5 seconds. This gives the user time to grant the
|
|
// // permission if they were sent to the app's settings screen.
|
|
// await Future.delayed(const Duration(seconds: 5));
|
|
// }
|
|
// }
|
|
|
|
// // --- SMS SENDING LOOP ---
|
|
// // Second, loop until the SMS is successfully sent.
|
|
// bool isSmsSent = false;
|
|
// while (!isSmsSent) {
|
|
// print("Attempting to send SMS...");
|
|
// isSmsSent = await _smsService.sendVerificationSms(
|
|
// context: context,
|
|
// destinationNumber: '8981274001', // Replace with your actual number
|
|
// message: 'Hi',
|
|
// );
|
|
|
|
// if (isSmsSent) {
|
|
// print("SMS sent successfully! Proceeding to login.");
|
|
// break; // Exit the SMS sending loop
|
|
// } else {
|
|
// print("SMS failed to send. Retrying in 5 seconds...");
|
|
// await Future.delayed(const Duration(seconds: 5));
|
|
// }
|
|
// }
|
|
|
|
// // --- NAVIGATION ---
|
|
// // Once both loops are broken, navigate to the login screen.
|
|
// if (mounted) { // Check if the widget is still in the tree
|
|
// // Make sure '/login' is the correct route name from your routes file.
|
|
// Navigator.pushReplacementNamed(context, '/login');
|
|
// }
|
|
// }
|
|
|
|
// Future<void> _loadVersion() async {
|
|
// final PackageInfo info = await PackageInfo.fromPlatform();
|
|
// if (mounted) {
|
|
// setState(() {
|
|
// _version = 'Version ${info.version} (${info.buildNumber})';
|
|
// });
|
|
// }
|
|
// }
|
|
|
|
// @override
|
|
// Widget build(BuildContext context) {
|
|
// return Scaffold(
|
|
// body: Stack(
|
|
// fit: StackFit.expand,
|
|
// children: <Widget>[
|
|
// Positioned.fill(
|
|
// child: Image.asset(
|
|
// 'assets/images/kconnect2.webp',
|
|
// fit: BoxFit.cover,
|
|
// ),
|
|
// ),
|
|
// Center(
|
|
// child: Column(
|
|
// mainAxisSize: MainAxisSize.min,
|
|
// children: [
|
|
// Text(
|
|
// AppLocalizations.of(context).kccbMobile,
|
|
// style: const TextStyle(
|
|
// fontSize: 36,
|
|
// fontWeight: FontWeight.bold,
|
|
// color: Color(0xFFFFFFFF),
|
|
// ),
|
|
// ),
|
|
// const SizedBox(height: 12),
|
|
// Text(
|
|
// AppLocalizations.of(context).kccBankFull,
|
|
// textAlign: TextAlign.center,
|
|
// style: const TextStyle(
|
|
// fontSize: 18,
|
|
// color: Color(0xFFFFFFFF),
|
|
// letterSpacing: 1.2,
|
|
// ),
|
|
// ),
|
|
// ],
|
|
// ),
|
|
// ),
|
|
// const Positioned(
|
|
// bottom: 40,
|
|
// left: 0,
|
|
// right: 0,
|
|
// child: Center(
|
|
// child: CircularProgressIndicator(color: Color(0xFFFFFFFF)),
|
|
// ),
|
|
// ),
|
|
// Positioned(
|
|
// bottom: 90,
|
|
// left: 0,
|
|
// right: 0,
|
|
// child: Text(
|
|
// _version,
|
|
// textAlign: TextAlign.center,
|
|
// style: const TextStyle(
|
|
// color: Color(0xFFFFFFFF),
|
|
// fontSize: 14,
|
|
// ),
|
|
// ),
|
|
// ),
|
|
// ],
|
|
// ),
|
|
// );
|
|
// }
|
|
// }
|
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:package_info_plus/package_info_plus.dart';
|
|
import 'package:kmobile/l10n/app_localizations.dart';
|
|
|
|
class SplashScreen extends StatefulWidget {
|
|
const SplashScreen({super.key});
|
|
|
|
@override
|
|
State<SplashScreen> createState() => _SplashScreenState();
|
|
}
|
|
|
|
class _SplashScreenState extends State<SplashScreen> {
|
|
String _version = '';
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
_loadVersion();
|
|
}
|
|
|
|
Future<void> _loadVersion() async {
|
|
final PackageInfo info = await PackageInfo.fromPlatform();
|
|
if (mounted) {
|
|
setState(() {
|
|
_version = 'Version ${info.version} (${info.buildNumber})';
|
|
});
|
|
}
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
// This build method is the same, but all the SMS logic is gone.
|
|
return Scaffold(
|
|
body: Stack(
|
|
fit: StackFit.expand,
|
|
children: <Widget>[
|
|
Positioned.fill(
|
|
child: Image.asset(
|
|
'assets/images/kconnect2.webp',
|
|
fit: BoxFit.cover,
|
|
),
|
|
),
|
|
Center(
|
|
child: Column(
|
|
mainAxisSize: MainAxisSize.min,
|
|
children: [
|
|
Text(
|
|
AppLocalizations.of(context).kccbMobile,
|
|
style: const TextStyle(
|
|
fontSize: 36,
|
|
fontWeight: FontWeight.bold,
|
|
color: Color(0xFFFFFFFF),
|
|
),
|
|
),
|
|
const SizedBox(height: 12),
|
|
Text(
|
|
AppLocalizations.of(context).kccBankFull,
|
|
textAlign: TextAlign.center,
|
|
style: const TextStyle(
|
|
fontSize: 18,
|
|
color: Color(0xFFFFFFFF),
|
|
letterSpacing: 1.2,
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
const Positioned(
|
|
bottom: 40,
|
|
left: 0,
|
|
right: 0,
|
|
child: Center(
|
|
child: CircularProgressIndicator(color: Color(0xFFFFFFFF)),
|
|
),
|
|
),
|
|
Positioned(
|
|
bottom: 90,
|
|
left: 0,
|
|
right: 0,
|
|
child: Text(
|
|
_version,
|
|
textAlign: TextAlign.center,
|
|
style: const TextStyle(
|
|
color: Color(0xFFFFFFFF),
|
|
fontSize: 14,
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|