refactor: change singleton registrations to lazySingleton for improved performance
This commit is contained in:
@@ -13,35 +13,35 @@ class CoreModule extends Module {
|
|||||||
@override
|
@override
|
||||||
void exportedBinds(Injector i) {
|
void exportedBinds(Injector i) {
|
||||||
// 1. Register the base HTTP client
|
// 1. Register the base HTTP client
|
||||||
i.addSingleton<Dio>(() => DioClient());
|
i.addLazySingleton<Dio>(() => DioClient());
|
||||||
|
|
||||||
// 2. Register the base API service
|
// 2. Register the base API service
|
||||||
i.addSingleton<BaseApiService>(() => ApiService(i.get<Dio>()));
|
i.addLazySingleton<BaseApiService>(() => ApiService(i.get<Dio>()));
|
||||||
|
|
||||||
// 3. Register Core API Services (Orchestrators)
|
// 3. Register Core API Services (Orchestrators)
|
||||||
i.addSingleton<FileUploadService>(
|
i.addLazySingleton<FileUploadService>(
|
||||||
() => FileUploadService(i.get<BaseApiService>()),
|
() => FileUploadService(i.get<BaseApiService>()),
|
||||||
);
|
);
|
||||||
i.addSingleton<SignedUrlService>(
|
i.addLazySingleton<SignedUrlService>(
|
||||||
() => SignedUrlService(i.get<BaseApiService>()),
|
() => SignedUrlService(i.get<BaseApiService>()),
|
||||||
);
|
);
|
||||||
i.addSingleton<VerificationService>(
|
i.addLazySingleton<VerificationService>(
|
||||||
() => VerificationService(i.get<BaseApiService>()),
|
() => VerificationService(i.get<BaseApiService>()),
|
||||||
);
|
);
|
||||||
i.addSingleton<LlmService>(() => LlmService(i.get<BaseApiService>()));
|
i.addLazySingleton<LlmService>(() => LlmService(i.get<BaseApiService>()));
|
||||||
i.addSingleton<RapidOrderService>(
|
i.addLazySingleton<RapidOrderService>(
|
||||||
() => RapidOrderService(i.get<BaseApiService>()),
|
() => RapidOrderService(i.get<BaseApiService>()),
|
||||||
);
|
);
|
||||||
|
|
||||||
// 4. Register Device dependency
|
// 4. Register Device dependency
|
||||||
i.addSingleton<ImagePicker>(() => ImagePicker());
|
i.addLazySingleton<ImagePicker>(() => ImagePicker());
|
||||||
|
|
||||||
// 5. Register Device Services
|
// 5. Register Device Services
|
||||||
i.addSingleton<CameraService>(() => CameraService(i.get<ImagePicker>()));
|
i.addLazySingleton<CameraService>(() => CameraService(i.get<ImagePicker>()));
|
||||||
i.addSingleton<GalleryService>(() => GalleryService(i.get<ImagePicker>()));
|
i.addLazySingleton<GalleryService>(() => GalleryService(i.get<ImagePicker>()));
|
||||||
i.addSingleton<FilePickerService>(FilePickerService.new);
|
i.addLazySingleton<FilePickerService>(FilePickerService.new);
|
||||||
i.addSingleton<AudioRecorderService>(AudioRecorderService.new);
|
i.addLazySingleton<AudioRecorderService>(AudioRecorderService.new);
|
||||||
i.addSingleton<DeviceFileUploadService>(
|
i.addLazySingleton<DeviceFileUploadService>(
|
||||||
() => DeviceFileUploadService(
|
() => DeviceFileUploadService(
|
||||||
cameraService: i.get<CameraService>(),
|
cameraService: i.get<CameraService>(),
|
||||||
galleryService: i.get<GalleryService>(),
|
galleryService: i.get<GalleryService>(),
|
||||||
|
|||||||
@@ -24,20 +24,20 @@ class BillingModule extends Module {
|
|||||||
@override
|
@override
|
||||||
void binds(Injector i) {
|
void binds(Injector i) {
|
||||||
// Repositories
|
// Repositories
|
||||||
i.addSingleton<BillingRepository>(BillingRepositoryImpl.new);
|
i.addLazySingleton<BillingRepository>(BillingRepositoryImpl.new);
|
||||||
|
|
||||||
// Use Cases
|
// Use Cases
|
||||||
i.addSingleton(GetBankAccountsUseCase.new);
|
i.addLazySingleton(GetBankAccountsUseCase.new);
|
||||||
i.addSingleton(GetCurrentBillAmountUseCase.new);
|
i.addLazySingleton(GetCurrentBillAmountUseCase.new);
|
||||||
i.addSingleton(GetSavingsAmountUseCase.new);
|
i.addLazySingleton(GetSavingsAmountUseCase.new);
|
||||||
i.addSingleton(GetPendingInvoicesUseCase.new);
|
i.addLazySingleton(GetPendingInvoicesUseCase.new);
|
||||||
i.addSingleton(GetInvoiceHistoryUseCase.new);
|
i.addLazySingleton(GetInvoiceHistoryUseCase.new);
|
||||||
i.addSingleton(GetSpendingBreakdownUseCase.new);
|
i.addLazySingleton(GetSpendingBreakdownUseCase.new);
|
||||||
i.addSingleton(ApproveInvoiceUseCase.new);
|
i.addLazySingleton(ApproveInvoiceUseCase.new);
|
||||||
i.addSingleton(DisputeInvoiceUseCase.new);
|
i.addLazySingleton(DisputeInvoiceUseCase.new);
|
||||||
|
|
||||||
// BLoCs
|
// BLoCs
|
||||||
i.addSingleton<BillingBloc>(
|
i.addLazySingleton<BillingBloc>(
|
||||||
() => BillingBloc(
|
() => BillingBloc(
|
||||||
getBankAccounts: i.get<GetBankAccountsUseCase>(),
|
getBankAccounts: i.get<GetBankAccountsUseCase>(),
|
||||||
getCurrentBillAmount: i.get<GetCurrentBillAmountUseCase>(),
|
getCurrentBillAmount: i.get<GetCurrentBillAmountUseCase>(),
|
||||||
|
|||||||
@@ -16,14 +16,14 @@ class CoverageModule extends Module {
|
|||||||
@override
|
@override
|
||||||
void binds(Injector i) {
|
void binds(Injector i) {
|
||||||
// Repositories
|
// Repositories
|
||||||
i.addSingleton<CoverageRepository>(CoverageRepositoryImpl.new);
|
i.addLazySingleton<CoverageRepository>(CoverageRepositoryImpl.new);
|
||||||
|
|
||||||
// Use Cases
|
// Use Cases
|
||||||
i.addSingleton(GetShiftsForDateUseCase.new);
|
i.addLazySingleton(GetShiftsForDateUseCase.new);
|
||||||
i.addSingleton(GetCoverageStatsUseCase.new);
|
i.addLazySingleton(GetCoverageStatsUseCase.new);
|
||||||
|
|
||||||
// BLoCs
|
// BLoCs
|
||||||
i.addSingleton<CoverageBloc>(CoverageBloc.new);
|
i.addLazySingleton<CoverageBloc>(CoverageBloc.new);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import 'presentation/pages/client_main_page.dart';
|
|||||||
class ClientMainModule extends Module {
|
class ClientMainModule extends Module {
|
||||||
@override
|
@override
|
||||||
void binds(Injector i) {
|
void binds(Injector i) {
|
||||||
i.addSingleton(ClientMainCubit.new);
|
i.addLazySingleton(ClientMainCubit.new);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ class ViewOrdersModule extends Module {
|
|||||||
i.add(GetAcceptedApplicationsForDayUseCase.new);
|
i.add(GetAcceptedApplicationsForDayUseCase.new);
|
||||||
|
|
||||||
// BLoCs
|
// BLoCs
|
||||||
i.addSingleton(ViewOrdersCubit.new);
|
i.addLazySingleton(ViewOrdersCubit.new);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ class StaffHomeModule extends Module {
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Presentation layer - Cubits
|
// Presentation layer - Cubits
|
||||||
i.addSingleton(
|
i.addLazySingleton(
|
||||||
() => HomeCubit(
|
() => HomeCubit(
|
||||||
repository: i.get<HomeRepository>(),
|
repository: i.get<HomeRepository>(),
|
||||||
getProfileCompletion: i.get<GetProfileCompletionUseCase>(),
|
getProfileCompletion: i.get<GetProfileCompletionUseCase>(),
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ class StaffProfileModule extends Module {
|
|||||||
|
|
||||||
// Presentation layer - Cubit as singleton to avoid recreation
|
// Presentation layer - Cubit as singleton to avoid recreation
|
||||||
// BlocProvider will use this same instance, preventing state emission after close
|
// BlocProvider will use this same instance, preventing state emission after close
|
||||||
i.addSingleton<ProfileCubit>(
|
i.addLazySingleton<ProfileCubit>(
|
||||||
() => ProfileCubit(
|
() => ProfileCubit(
|
||||||
i.get<GetStaffProfileUseCase>(),
|
i.get<GetStaffProfileUseCase>(),
|
||||||
i.get<SignOutStaffUseCase>(),
|
i.get<SignOutStaffUseCase>(),
|
||||||
|
|||||||
@@ -17,17 +17,17 @@ class FaqsModule extends Module {
|
|||||||
@override
|
@override
|
||||||
void binds(Injector i) {
|
void binds(Injector i) {
|
||||||
// Repository
|
// Repository
|
||||||
i.addSingleton<FaqsRepositoryInterface>(
|
i.addLazySingleton<FaqsRepositoryInterface>(
|
||||||
() => FaqsRepositoryImpl(),
|
() => FaqsRepositoryImpl(),
|
||||||
);
|
);
|
||||||
|
|
||||||
// Use Cases
|
// Use Cases
|
||||||
i.addSingleton(
|
i.addLazySingleton(
|
||||||
() => GetFaqsUseCase(
|
() => GetFaqsUseCase(
|
||||||
i<FaqsRepositoryInterface>(),
|
i<FaqsRepositoryInterface>(),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
i.addSingleton(
|
i.addLazySingleton(
|
||||||
() => SearchFaqsUseCase(
|
() => SearchFaqsUseCase(
|
||||||
i<FaqsRepositoryInterface>(),
|
i<FaqsRepositoryInterface>(),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -25,29 +25,29 @@ class PrivacySecurityModule extends Module {
|
|||||||
@override
|
@override
|
||||||
void binds(Injector i) {
|
void binds(Injector i) {
|
||||||
// Repository
|
// Repository
|
||||||
i.addSingleton<PrivacySettingsRepositoryInterface>(
|
i.addLazySingleton<PrivacySettingsRepositoryInterface>(
|
||||||
() => PrivacySettingsRepositoryImpl(
|
() => PrivacySettingsRepositoryImpl(
|
||||||
Modular.get<DataConnectService>(),
|
Modular.get<DataConnectService>(),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
// Use Cases
|
// Use Cases
|
||||||
i.addSingleton(
|
i.addLazySingleton(
|
||||||
() => GetProfileVisibilityUseCase(
|
() => GetProfileVisibilityUseCase(
|
||||||
i<PrivacySettingsRepositoryInterface>(),
|
i<PrivacySettingsRepositoryInterface>(),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
i.addSingleton(
|
i.addLazySingleton(
|
||||||
() => UpdateProfileVisibilityUseCase(
|
() => UpdateProfileVisibilityUseCase(
|
||||||
i<PrivacySettingsRepositoryInterface>(),
|
i<PrivacySettingsRepositoryInterface>(),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
i.addSingleton(
|
i.addLazySingleton(
|
||||||
() => GetTermsUseCase(
|
() => GetTermsUseCase(
|
||||||
i<PrivacySettingsRepositoryInterface>(),
|
i<PrivacySettingsRepositoryInterface>(),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
i.addSingleton(
|
i.addLazySingleton(
|
||||||
() => GetPrivacyPolicyUseCase(
|
() => GetPrivacyPolicyUseCase(
|
||||||
i<PrivacySettingsRepositoryInterface>(),
|
i<PrivacySettingsRepositoryInterface>(),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -26,12 +26,12 @@ class StaffMainModule extends Module {
|
|||||||
@override
|
@override
|
||||||
void binds(Injector i) {
|
void binds(Injector i) {
|
||||||
// Register the StaffConnectorRepository from data_connect
|
// Register the StaffConnectorRepository from data_connect
|
||||||
i.addSingleton<StaffConnectorRepository>(
|
i.addLazySingleton<StaffConnectorRepository>(
|
||||||
StaffConnectorRepositoryImpl.new,
|
StaffConnectorRepositoryImpl.new,
|
||||||
);
|
);
|
||||||
|
|
||||||
// Register the use case from data_connect
|
// Register the use case from data_connect
|
||||||
i.addSingleton(
|
i.addLazySingleton(
|
||||||
() => GetProfileCompletionUseCase(
|
() => GetProfileCompletionUseCase(
|
||||||
repository: i.get<StaffConnectorRepository>(),
|
repository: i.get<StaffConnectorRepository>(),
|
||||||
),
|
),
|
||||||
|
|||||||
Reference in New Issue
Block a user