76 lines
1.9 KiB
Dart
76 lines
1.9 KiB
Dart
import 'dart:async';
|
|
|
|
import 'package:agrilink_vocpro/core/route/app_route.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:go_router/go_router.dart';
|
|
|
|
class SplashScreen extends StatefulWidget {
|
|
const SplashScreen({super.key});
|
|
|
|
@override
|
|
State<SplashScreen> createState() => _SplashScreenState();
|
|
}
|
|
|
|
class _SplashScreenState extends State<SplashScreen> {
|
|
bool isLoggedIn = false;
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
_initialize();
|
|
}
|
|
|
|
Future<void> _initialize() async {
|
|
// final authProvider = Provider.of<AuthProvider>(context, listen: false);
|
|
// bool isLoggedIn = await _checkLoginStatus(authProvider);
|
|
_navigateAfterSplash(isLoggedIn);
|
|
}
|
|
|
|
// Future<bool> _checkLoginStatus(AuthProvider authProvider) async {
|
|
// SharedPreferences prefs = await SharedPreferences.getInstance();
|
|
|
|
// if (prefs.getKeys().isEmpty) return false;
|
|
|
|
// if (prefs.getBool('isLoggedIn') == true) {
|
|
// String? token = prefs.getString('token');
|
|
// String? refreshToken = prefs.getString('refreshToken');
|
|
|
|
// if (token != null && !JwtDecoder.isExpired(token)) {
|
|
// return true;
|
|
// } else if (refreshToken != null && !JwtDecoder.isExpired(refreshToken)) {
|
|
// final result = await authProvider.refreshToken();
|
|
// return result == ResultState.hasData;
|
|
// } else {
|
|
// prefs.remove('token');
|
|
// return false;
|
|
// }
|
|
// }
|
|
|
|
// return false;
|
|
// }
|
|
|
|
void _navigateAfterSplash(bool isLoggedIn) {
|
|
Timer(const Duration(seconds: 2), () {
|
|
if (isLoggedIn == true) {
|
|
context.go(AppRoute.dashboard);
|
|
} else {
|
|
context.go(AppRoute.login);
|
|
}
|
|
});
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
body: SafeArea(
|
|
child: Center(
|
|
child: Image.asset(
|
|
'assets/images/app_logo.png',
|
|
width: 80,
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|