You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

107 lines
3.3KB

  1. import 'package:farm_tpf/presentation/screens/login/view/login_page.dart';
  2. import 'package:farm_tpf/presentation/screens/splash/view/splash_page.dart';
  3. import 'package:farm_tpf/presentation/screens/tabbar/tabbar.dart';
  4. import 'package:farm_tpf/routes/route_name.dart';
  5. import 'package:farm_tpf/routes/routes.dart';
  6. import 'package:farm_tpf/utils/const_color.dart';
  7. import 'package:flutter/material.dart';
  8. import 'package:flutter_bloc/flutter_bloc.dart';
  9. import 'package:get/get.dart';
  10. import 'package:google_fonts/google_fonts.dart';
  11. import 'authentication/bloc/authentication_bloc.dart';
  12. import 'data/repository/authentication_repository.dart';
  13. import 'main.dart';
  14. class App extends StatelessWidget {
  15. const App({
  16. Key? key,
  17. required this.authenticationRepository,
  18. }) : super(key: key);
  19. final AuthenticationRepository authenticationRepository;
  20. @override
  21. Widget build(BuildContext context) {
  22. return RepositoryProvider.value(
  23. value: authenticationRepository,
  24. child: BlocProvider(
  25. create: (_) => AuthenticationBloc(
  26. repository: authenticationRepository,
  27. ),
  28. child: AppView(),
  29. ),
  30. );
  31. }
  32. }
  33. class AppView extends StatefulWidget {
  34. @override
  35. _AppViewState createState() => _AppViewState();
  36. }
  37. class _AppViewState extends State<AppView> {
  38. NavigatorState? get _navigator => globalNavigator.currentState;
  39. // NavigatorState get _navigator => _navigatorKey.currentState!;
  40. @override
  41. Widget build(BuildContext context) {
  42. return GetMaterialApp(
  43. debugShowCheckedModeBanner: false,
  44. initialRoute: RouteName.home,
  45. navigatorKey: globalNavigator,
  46. theme: ThemeData(
  47. backgroundColor: Colors.white,
  48. brightness: Brightness.light,
  49. primaryColor: AppColors.DEFAULT,
  50. accentColor: AppColors.DEFAULT,
  51. hoverColor: AppColors.GREEN,
  52. textTheme: GoogleFonts.sairaTextTheme(
  53. Theme.of(context).textTheme,
  54. ),
  55. ),
  56. // navigatorKey: _navigatorKey,
  57. builder: (context, child) {
  58. // return TabbarScreen();
  59. // return LoginPage();
  60. return BlocListener<AuthenticationBloc, AuthenticationState>(
  61. listener: (context, state) {
  62. switch (state.status) {
  63. case AuthenticationStatus.authenticated:
  64. _navigator!.pushAndRemoveUntil<void>(
  65. TabbarScreen.route(),
  66. (route) => false,
  67. );
  68. break;
  69. // _navigator.pushAndRemoveUntil<void>(
  70. // TabbarScreen.route(),
  71. // (route) => false,
  72. // );
  73. break;
  74. case AuthenticationStatus.unauthenticated:
  75. _navigator!.pushAndRemoveUntil<void>(
  76. LoginPage.route(),
  77. (route) => false,
  78. );
  79. // _navigator.pushAndRemoveUntil<void>(
  80. // LoginPage.route(),
  81. // (route) => false,
  82. // );
  83. break;
  84. default:
  85. _navigator!.pushAndRemoveUntil<void>(
  86. LoginPage.route(),
  87. (route) => false,
  88. );
  89. break;
  90. }
  91. },
  92. child: child,
  93. );
  94. },
  95. onGenerateRoute: Routes.buildRoutes,
  96. );
  97. }
  98. }