#flutter #dart
#трепетать #дротик
Вопрос:
Я пытаюсь реализовать аутентификацию Firebase с помощью своего приложения Flutter. Я очень новичок в библиотеке блока Флаттера.
Я хотел бы добиться следующего:
- Отобразите заставку в течение 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, и мне нужно сделать блок аутентификации доступным по всему миру. Может возникнуть ситуация, скажем, если администратор отключит ПОЛЬЗОВАТЕЛЯ во время просмотра приложения, он должен немедленно выйти из системы и отобразить страницу с ошибкой.