import 'package:flutter/material.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:syncrow_app/features/auth/model/token.dart'; import 'package:syncrow_app/generated/assets.dart'; import 'package:syncrow_app/navigation/routing_constants.dart'; class SplashView extends StatelessWidget { const SplashView({super.key}); @override Widget build(BuildContext context) { return FutureBuilder( future: getTokenAndValidate(context), builder: (context, snapshot) { if (snapshot.hasData) { if (snapshot.data ?? false) { Future.delayed(const Duration(seconds: 1), () { Navigator.pushReplacementNamed(context, Routes.homeRoute); }); } else { Future.delayed(const Duration(seconds: 1), () { Navigator.pushReplacementNamed(context, Routes.authLogin); }); } } return Scaffold( body: Stack( alignment: Alignment.center, children: [ Container( width: MediaQuery.sizeOf(context).width, height: MediaQuery.sizeOf(context).height, decoration: const BoxDecoration( image: DecorationImage( image: AssetImage( Assets.imagesBackground, ), fit: BoxFit.cover, ), ), ), Container( width: MediaQuery.sizeOf(context).width, height: MediaQuery.sizeOf(context).height, decoration: const BoxDecoration( image: DecorationImage( image: AssetImage(Assets.imagesVector), fit: BoxFit.cover, opacity: 0.9, ), ), ), SvgPicture.asset( Assets.imagesLogo, width: 240, ) ], ), ); }, ); } Future getTokenAndValidate(BuildContext context) async { return await const FlutterSecureStorage() .read(key: Token.loginAccessTokenKey) .then((value) { if (value == null) { return false; } print("Decoding token Started"); var tokenData = Token.decodeToken(value ?? ""); print("checking token data"); if (tokenData.containsKey('exp')) { var exp = tokenData['exp'] ?? 0; var currentTime = DateTime.now().millisecondsSinceEpoch ~/ 1000; print('time: $currentTime exp: $exp'); return currentTime < exp; } else { return false; } }); } }