Как перемещаться в соответствии с состоянием блокировки аутентификации после отображения заставки?

#flutter #dart

#трепетать #дротик

Вопрос:

Я пытаюсь реализовать аутентификацию Firebase с помощью своего приложения Flutter. Я очень новичок в библиотеке блока Флаттера.

Я хотел бы добиться следующего:

  1. Отобразите заставку в течение 2 секунд.
  2. If User.isAuthenticated затем отобразите домашнюю страницу приложения else , Отобразите страницу входа/регистрации.

Вот моя текущая реализация:

main.dart

 Futurelt;voidgt; main() async {  WidgetsFlutterBinding.ensureInitialized();  await Firebase.initializeApp();   BlocOverrides.runZoned(() {  final UserRepository userRepository = UserRepository();   runApp(BlocProvider(  create: (context) =gt; AuthenticationBloc(userRepository: userRepository),  child: MyApp(userRepository: userRepository)));  }, blocObserver: CustomBlocObserver()); }   

route.dart

 class RouteGenerator {  RouteGenerator._();  static const String login = '/login_screen';  . . .   static Routelt;dynamicgt; generateRoute(RouteSettings settings) {  switch (settings.name) {  case splash:  return MaterialPageRoute(  builder: (_) =gt; const SplashScreen(),  );  case login:  return MaterialPageRoute(  builder: (_) =gt; const LoginScreen(),  );  case signup:  return MaterialPageRoute(  builder: (_) =gt; const SignupScreen(),  );  case registered:  return MaterialPageRoute(  builder: (_) =gt; const HomePageScreen(),  default:  throw RouteException('Route not found');  }  } }  class RouteException implements Exception {  final String message;  const RouteException(this.message); }   

splash_screen.dart

 class SplashScreen extends StatefulWidget {  const SplashScreen();   @override  _SplashScreenState createState() =gt; _SplashScreenState(); }  class _SplashScreenState extends Statelt;SplashScreengt; {  @override  void initState() {  Future.delayed(  Duration(seconds: 2),  () {  // How to use BlocProviderlt;AuthenticationBlocgt; to navigate to the login screen or Homepage?  Navigator.of(context).pushReplacementNamed(RouteGenerator.login);  },  );  super.initState();  }   @override  Widget build(BuildContext context) {  

Существуют ли какие-либо рекомендации по использованию библиотеки блоков Flutter, и мне нужно сделать блок аутентификации доступным по всему миру. Может возникнуть ситуация, скажем, если администратор отключит ПОЛЬЗОВАТЕЛЯ во время просмотра приложения, он должен немедленно выйти из системы и отобразить страницу с ошибкой.