import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../../core/theme.dart'; import '../../providers/setup_check_provider.dart'; import 'face_enrollment_screen.dart'; import '../profile/signature_screen.dart'; class OnboardingCheckScreen extends StatefulWidget { const OnboardingCheckScreen({super.key}); @override State createState() => _OnboardingCheckScreenState(); } class _OnboardingCheckScreenState extends State with SingleTickerProviderStateMixin { late AnimationController _controller; late Animation _fadeAnimation; @override void initState() { super.initState(); _controller = AnimationController( vsync: this, duration: const Duration(milliseconds: 600), ); _fadeAnimation = CurvedAnimation(parent: _controller, curve: Curves.easeIn); _controller.forward(); WidgetsBinding.instance.addPostFrameCallback((_) { _runCheck(); }); } Future _runCheck() async { final provider = context.read(); await provider.checkSetup(); if (!mounted) return; // Navigasi berdasarkan hasil pengecekan if (!provider.hasFace) { Navigator.pushReplacement( context, MaterialPageRoute( builder: (_) => const FaceEnrollmentScreen(isOnboarding: true), ), ); } else if (!provider.hasSignature) { Navigator.pushReplacement( context, MaterialPageRoute( builder: (_) => const SignatureScreen(isOnboarding: true), ), ); } else { Navigator.pushReplacementNamed(context, '/home'); } } @override void dispose() { _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.white, body: FadeTransition( opacity: _fadeAnimation, child: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Image.asset( 'assets/images/logo.png', height: 100, width: 220, fit: BoxFit.contain, ), const SizedBox(height: AppTheme.spacingXl), const SizedBox( width: 24, height: 24, child: CircularProgressIndicator( color: AppTheme.primaryDark, strokeWidth: 2.5, ), ), const SizedBox(height: AppTheme.spacingMd), Text( 'Memeriksa kelengkapan akun...', style: AppTheme.bodySmall.copyWith(color: AppTheme.textSecondary), ), ], ), ), ), ); } }