import 'package:sysfarma_mobile/src/core/storage/tenant_session_store.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; class SplashScreen extends ConsumerStatefulWidget { const SplashScreen({super.key}); @override ConsumerState createState() => _SplashScreenState(); } class _SplashScreenState extends ConsumerState with SingleTickerProviderStateMixin { late final AnimationController _pulseController; @override void initState() { super.initState(); // Pulso suave mientras resuelve la sesion - antes el logo quedaba // completamente estatico, la primera imagen que ve el usuario al abrir // la app. _pulseController = AnimationController( vsync: this, duration: const Duration(milliseconds: 900), )..repeat(reverse: true); _navigate(); } @override void dispose() { _pulseController.dispose(); super.dispose(); } Future _navigate() async { final session = await ref.read(tenantSessionStoreProvider).readSession(); if (!mounted) return; if (session != null && session.token.isNotEmpty) { context.go('/home'); } else { context.go('/login'); } } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.white, body: Center( child: ScaleTransition( scale: Tween(begin: 0.92, end: 1.0).animate( CurvedAnimation( parent: _pulseController, curve: Curves.easeInOut, ), ), child: const SizedBox( width: 96, height: 96, child: Image( image: AssetImage('assets/icon/app_icon.png'), fit: BoxFit.contain, ), ), ), ), ); } }