import 'package:farm_tpf/presentation/screens/splash/view/splash_page.dart'; import 'package:farm_tpf/presentation/screens/tabbar/tabbar.dart'; import 'package:farm_tpf/utils/const_color.dart'; import 'package:farm_tpf/utils/const_enum.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'authentication/bloc/authentication_bloc.dart'; import 'data/repository/authentication_repository.dart'; import 'presentation/screens/login/login_page.dart'; import 'services/firebase_notification_service.dart'; final GlobalKey globalNavigator = GlobalKey(); class App extends StatelessWidget { const App({ Key? key, required this.authenticationRepository, }) : assert(authenticationRepository != null), super(key: key); final AuthenticationRepository authenticationRepository; @override Widget build(BuildContext context) { return RepositoryProvider.value( value: authenticationRepository, child: BlocProvider( create: (_) => AuthenticationBloc( repository: authenticationRepository, ), child: AppView(), ), ); } } class AppView extends StatefulWidget { @override _AppViewState createState() => _AppViewState(); } class _AppViewState extends State { final _navigatorKey = GlobalKey(); NavigatorState? get _navigator => _navigatorKey.currentState; @override Widget build(BuildContext context) { return ScreenUtilInit( designSize: const Size(375, 812), minTextAdapt: true, splitScreenMode: true, builder: (BuildContext context, Widget? child) { return GetMaterialApp( debugShowCheckedModeBanner: false, theme: ThemeData( backgroundColor: Colors.white, brightness: Brightness.light, primaryColor: AppColors.DEFAULT, hoverColor: AppColors.GREEN, // textTheme: GoogleFonts.sairaTextTheme( // Theme.of(context).textTheme, // ), ), navigatorKey: _navigatorKey, builder: (context, child) { return BlocListener( listener: (context, state) { switch (state.status) { case AuthenticationStatus.authenticated: FirebaseNotificationService.initService(); // _navigator!.pushAndRemoveUntil( // TabbarScreen.route(), // (route) => false, // ); Get.offAll(() => TabbarScreen()); break; case AuthenticationStatus.unauthenticated: FirebaseNotificationService.initService(); // _navigator!.pushAndRemoveUntil( // LoginPage.route(), // (route) => false, // ); Get.offAll(() => const LoginPage()); break; default: break; } }, child: child, ); }, onGenerateRoute: (_) => SplashPage.route(), ); }, ); } }