import 'package:chat_repository/chat_repository.dart'; import 'package:firebase_auth/firebase_auth.dart'; import 'package:injector/injector.dart'; import 'package:profession_repository/profession_repository.dart'; import 'package:professional_repository/professional_repository.dart'; import 'package:prosappco/blocs/auth_bloc/auth_bloc.dart'; import 'package:prosappco/blocs/authentication_bloc/authentication_bloc.dart'; import 'package:prosappco/blocs/chat_bloc/chat_bloc.dart'; import 'package:prosappco/blocs/my_user_bloc/my_user_bloc.dart'; import 'package:prosappco/blocs/notification_bloc/notification_bloc.dart'; import 'package:prosappco/blocs/professional_bloc/professional_bloc.dart'; import 'package:prosappco/blocs/professional_list_bloc/professional_list_bloc.dart'; import 'package:prosappco/blocs/professional_profile_bloc/professional_profile_bloc.dart'; import 'package:prosappco/blocs/profile_bloc/profile_bloc.dart'; import 'package:prosappco/blocs/score_bloc/score_bloc.dart'; import 'package:prosappco/blocs/service_bloc/service_bloc.dart'; import 'package:prosappco/blocs/setting_bloc/setting_bloc.dart'; import 'package:prosappco/blocs/sign_up_bloc/sign_up_bloc.dart'; import 'package:prosappco/blocs/sing_in_bloc/sign_in_bloc.dart'; import 'package:prosappco/local_notifications/local_notifications.dart'; import 'package:score_repository/score_repository.dart'; import 'package:service_repository/service_repository.dart'; import 'package:user_repository/user_repository.dart'; import 'package:city_repository/city_repository.dart'; import 'package:setting_repository/setting_repository.dart'; class AppDI { void register() { final injector = Injector.appInstance; injector.registerSingleton( (() => FirebaseUserRepository(FirebaseAuth.instance))); injector.registerSingleton(() => FirebaseCityRepository()); injector.registerSingleton( () => FirebaseProfessionRepository()); injector.registerSingleton( () => FirebaseSettingRepository()); injector.registerSingleton(() => FirebaseProfessionalRepository()); injector.registerSingleton(() => FirebaseServiceRepository()); injector.registerSingleton(() => FirebaseChatRepository()); injector.registerSingleton(() => FirebaseScoreRepository()); injector.registerSingleton((() => AuthenticationBloc(myUserRepository: injector.get()))); injector.registerSingleton( (() => MyUserBloc(myUserRepository: injector.get()))); injector.registerSingleton( (() => ProfileBloc(userRepository: injector.get()))); injector.registerSingleton( () => ProfessionalBloc( professionalRepository: injector.get(), userRepository: injector.get()), ); injector.registerSingleton( () => NotificationBloc( requestLocalNotificationPermission: LocalNotifications.requestPermissionLocalNotifications, showLocalNotification: LocalNotifications.showLocalNotification, ), ); injector.registerDependency( () => SignInBloc(userRepository: injector.get())); injector.registerDependency( () => SignUpBloc(userRepository: injector.get())); injector.registerDependency( () => SettingBloc(userRepository: injector.get())); injector.registerDependency( () => AuthBloc(userRepository: injector.get())); injector.registerSingleton( () => ProfessionalProfileBloc(professionalRepository: injector.get())); injector.registerDependency( () => ProfessionalListBloc( userRepository: injector.get(), firebaseProfessonalRepository: injector.get()), ); injector.registerDependency(() => ChatBloc( chatRepository: injector.get(), )); injector.registerDependency( () => ServiceBloc( serviceRepository: injector.get(), userRepository: injector.get(), professionRepository: injector.get(), ), ); injector.registerDependency( () => ScoreBloc( scoreRepository: injector.get(), userRepository: injector.get(), ), ); // injector.registerSingleton((() => ScoreBloc( // firebaseScoreRepository: injector.get(), // userRepository: injector.get(), // ))); } }