반응형

- 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();
        }
      },
    );
  }
}

 

반응형

+ Recent posts