proxybuy-flutter/lib/auth_wrapper.dart

54 lines
1.6 KiB
Dart

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:lba/screens/auth/onboarding_page.dart';
import 'package:lba/screens/mains/navigation/navigation.dart';
import 'package:lba/screens/auth/bloc/auth_bloc.dart';
class AuthWrapper extends StatefulWidget {
const AuthWrapper({super.key});
@override
State<AuthWrapper> createState() => _AuthWrapperState();
}
class _AuthWrapperState extends State<AuthWrapper> {
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
@override
Widget build(BuildContext context) {
return BlocListener<AuthBloc, AuthState>(
listener: (context, state) {
if (state is AuthInitial) {
if (FirebaseAuth.instance.currentUser == null) {
Navigator.of(context).pushAndRemoveUntil(
MaterialPageRoute(builder: (context) => const OnboardingPage()),
(route) => false,
);
}
}
},
child: StreamBuilder<User?>(
stream: FirebaseAuth.instance.authStateChanges(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const Scaffold(
body: Center(
child: CircularProgressIndicator(),
),
);
}
final bool isLoggedIn = snapshot.hasData && snapshot.data != null;
if (isLoggedIn) {
return const MainScreen();
} else {
return const OnboardingPage();
}
},
),
);
}
}