[Flutter] FirebaseAuth 상태에 따라 자동으로 Screen 이동하기

반응형

- main에서 home 을 AuthCheck 로 지정

void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return GetMaterialApp(
title: 'Flutter Demo',
home: const AuthCheck(),
);
}
}

 

- AuthCheck에서 StreamBuilder에 의하여 FirebaseAuth 상태가 변경될때 자동으로 HomeScreen으로 이동하거나  LoginScreen 으로 이동한다. 

(HomeScreen에서 Logout을 하면 자동으로 StreamBuilder에 의하여 LoginScreen으로 이동한다.)

class AuthCheck extends StatelessWidget {
const AuthCheck({super.key});
@override
Widget build(BuildContext context) {
return StreamBuilder<User?>(
stream: FirebaseAuth.instance.authStateChanges(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const Scaffold(
body: Center(child: CircularProgressIndicator()),
);
} else if (snapshot.hasData) {
return const HomeScreen();
} else {
return const LoginScreen();
}
},
);
}
}

 

반응형