proxybuy-flutter/lib/simple_auth_gate.dart

75 lines
1.8 KiB
Dart

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<SimpleAuthGate> createState() => _SimpleAuthGateState();
}
class _SimpleAuthGateState extends State<SimpleAuthGate> {
bool _isLoading = true;
Widget? _targetScreen;
@override
void initState() {
super.initState();
_determineInitialScreen();
}
Future<void> _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<void> resetOnboarding() async {
final prefs = await SharedPreferences.getInstance();
await prefs.setBool('first_time_user', true);
}
}