import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter/material.dart'; import 'package:lba/screens/auth/login_page.dart'; import 'package:lba/screens/auth/onboarding_page.dart'; import 'package:lba/screens/mains/navigation/navigation.dart'; import 'package:shared_preferences/shared_preferences.dart'; class SimpleAuthGate extends StatefulWidget { const SimpleAuthGate({super.key}); @override State createState() => _SimpleAuthGateState(); } class _SimpleAuthGateState extends State { bool _isLoading = true; Widget? _targetScreen; @override void initState() { super.initState(); _determineInitialScreen(); } Future _determineInitialScreen() async { final user = FirebaseAuth.instance.currentUser; final isLoggedIn = user != null; if (isLoggedIn) { _setTargetScreen(const MainScreen()); return; } final prefs = await SharedPreferences.getInstance(); final isFirstTime = prefs.getBool('first_time_user') ?? true; if (isFirstTime) { _setTargetScreen(OnboardingPage( onCompleted: () { _setTargetScreen(const LoginPage()); }, )); } else { _setTargetScreen(const LoginPage()); } } void _setTargetScreen(Widget screen) { if (mounted) { setState(() { _targetScreen = screen; _isLoading = false; }); } } @override Widget build(BuildContext context) { if (_isLoading || _targetScreen == null) { return const Scaffold( body: Center( child: CircularProgressIndicator(), ), ); } return _targetScreen!; } static Future resetOnboarding() async { final prefs = await SharedPreferences.getInstance(); await prefs.setBool('first_time_user', true); } }