From 7a5c130289b16ce7073a1baded3b09aeb0a8d407 Mon Sep 17 00:00:00 2001 From: Achintha Isuru Date: Mon, 9 Mar 2026 15:01:18 -0400 Subject: [PATCH] refactor: change singleton registrations to lazySingleton for improved performance --- .../packages/core/lib/src/core_module.dart | 26 +++++++++---------- .../billing/lib/src/billing_module.dart | 20 +++++++------- .../lib/src/coverage_module.dart | 8 +++--- .../lib/src/client_main_module.dart | 2 +- .../lib/src/view_orders_module.dart | 2 +- .../staff/home/lib/src/staff_home_module.dart | 2 +- .../profile/lib/src/staff_profile_module.dart | 2 +- .../faqs/lib/src/staff_faqs_module.dart | 6 ++--- .../src/staff_privacy_security_module.dart | 10 +++---- .../staff_main/lib/src/staff_main_module.dart | 4 +-- 10 files changed, 41 insertions(+), 41 deletions(-) diff --git a/apps/mobile/packages/core/lib/src/core_module.dart b/apps/mobile/packages/core/lib/src/core_module.dart index 3f1c9f0c..5c71f6aa 100644 --- a/apps/mobile/packages/core/lib/src/core_module.dart +++ b/apps/mobile/packages/core/lib/src/core_module.dart @@ -13,35 +13,35 @@ class CoreModule extends Module { @override void exportedBinds(Injector i) { // 1. Register the base HTTP client - i.addSingleton(() => DioClient()); + i.addLazySingleton(() => DioClient()); // 2. Register the base API service - i.addSingleton(() => ApiService(i.get())); + i.addLazySingleton(() => ApiService(i.get())); // 3. Register Core API Services (Orchestrators) - i.addSingleton( + i.addLazySingleton( () => FileUploadService(i.get()), ); - i.addSingleton( + i.addLazySingleton( () => SignedUrlService(i.get()), ); - i.addSingleton( + i.addLazySingleton( () => VerificationService(i.get()), ); - i.addSingleton(() => LlmService(i.get())); - i.addSingleton( + i.addLazySingleton(() => LlmService(i.get())); + i.addLazySingleton( () => RapidOrderService(i.get()), ); // 4. Register Device dependency - i.addSingleton(() => ImagePicker()); + i.addLazySingleton(() => ImagePicker()); // 5. Register Device Services - i.addSingleton(() => CameraService(i.get())); - i.addSingleton(() => GalleryService(i.get())); - i.addSingleton(FilePickerService.new); - i.addSingleton(AudioRecorderService.new); - i.addSingleton( + i.addLazySingleton(() => CameraService(i.get())); + i.addLazySingleton(() => GalleryService(i.get())); + i.addLazySingleton(FilePickerService.new); + i.addLazySingleton(AudioRecorderService.new); + i.addLazySingleton( () => DeviceFileUploadService( cameraService: i.get(), galleryService: i.get(), diff --git a/apps/mobile/packages/features/client/billing/lib/src/billing_module.dart b/apps/mobile/packages/features/client/billing/lib/src/billing_module.dart index 9ad44e3e..b2bf37d8 100644 --- a/apps/mobile/packages/features/client/billing/lib/src/billing_module.dart +++ b/apps/mobile/packages/features/client/billing/lib/src/billing_module.dart @@ -24,20 +24,20 @@ class BillingModule extends Module { @override void binds(Injector i) { // Repositories - i.addSingleton(BillingRepositoryImpl.new); + i.addLazySingleton(BillingRepositoryImpl.new); // Use Cases - i.addSingleton(GetBankAccountsUseCase.new); - i.addSingleton(GetCurrentBillAmountUseCase.new); - i.addSingleton(GetSavingsAmountUseCase.new); - i.addSingleton(GetPendingInvoicesUseCase.new); - i.addSingleton(GetInvoiceHistoryUseCase.new); - i.addSingleton(GetSpendingBreakdownUseCase.new); - i.addSingleton(ApproveInvoiceUseCase.new); - i.addSingleton(DisputeInvoiceUseCase.new); + i.addLazySingleton(GetBankAccountsUseCase.new); + i.addLazySingleton(GetCurrentBillAmountUseCase.new); + i.addLazySingleton(GetSavingsAmountUseCase.new); + i.addLazySingleton(GetPendingInvoicesUseCase.new); + i.addLazySingleton(GetInvoiceHistoryUseCase.new); + i.addLazySingleton(GetSpendingBreakdownUseCase.new); + i.addLazySingleton(ApproveInvoiceUseCase.new); + i.addLazySingleton(DisputeInvoiceUseCase.new); // BLoCs - i.addSingleton( + i.addLazySingleton( () => BillingBloc( getBankAccounts: i.get(), getCurrentBillAmount: i.get(), diff --git a/apps/mobile/packages/features/client/client_coverage/lib/src/coverage_module.dart b/apps/mobile/packages/features/client/client_coverage/lib/src/coverage_module.dart index aa36826c..cd741711 100644 --- a/apps/mobile/packages/features/client/client_coverage/lib/src/coverage_module.dart +++ b/apps/mobile/packages/features/client/client_coverage/lib/src/coverage_module.dart @@ -16,14 +16,14 @@ class CoverageModule extends Module { @override void binds(Injector i) { // Repositories - i.addSingleton(CoverageRepositoryImpl.new); + i.addLazySingleton(CoverageRepositoryImpl.new); // Use Cases - i.addSingleton(GetShiftsForDateUseCase.new); - i.addSingleton(GetCoverageStatsUseCase.new); + i.addLazySingleton(GetShiftsForDateUseCase.new); + i.addLazySingleton(GetCoverageStatsUseCase.new); // BLoCs - i.addSingleton(CoverageBloc.new); + i.addLazySingleton(CoverageBloc.new); } @override diff --git a/apps/mobile/packages/features/client/client_main/lib/src/client_main_module.dart b/apps/mobile/packages/features/client/client_main/lib/src/client_main_module.dart index 24762388..1204f1e9 100644 --- a/apps/mobile/packages/features/client/client_main/lib/src/client_main_module.dart +++ b/apps/mobile/packages/features/client/client_main/lib/src/client_main_module.dart @@ -13,7 +13,7 @@ import 'presentation/pages/client_main_page.dart'; class ClientMainModule extends Module { @override void binds(Injector i) { - i.addSingleton(ClientMainCubit.new); + i.addLazySingleton(ClientMainCubit.new); } @override diff --git a/apps/mobile/packages/features/client/orders/view_orders/lib/src/view_orders_module.dart b/apps/mobile/packages/features/client/orders/view_orders/lib/src/view_orders_module.dart index 6ba187d2..7229767c 100644 --- a/apps/mobile/packages/features/client/orders/view_orders/lib/src/view_orders_module.dart +++ b/apps/mobile/packages/features/client/orders/view_orders/lib/src/view_orders_module.dart @@ -27,7 +27,7 @@ class ViewOrdersModule extends Module { i.add(GetAcceptedApplicationsForDayUseCase.new); // BLoCs - i.addSingleton(ViewOrdersCubit.new); + i.addLazySingleton(ViewOrdersCubit.new); } @override diff --git a/apps/mobile/packages/features/staff/home/lib/src/staff_home_module.dart b/apps/mobile/packages/features/staff/home/lib/src/staff_home_module.dart index 0b319174..921a304a 100644 --- a/apps/mobile/packages/features/staff/home/lib/src/staff_home_module.dart +++ b/apps/mobile/packages/features/staff/home/lib/src/staff_home_module.dart @@ -33,7 +33,7 @@ class StaffHomeModule extends Module { ); // Presentation layer - Cubits - i.addSingleton( + i.addLazySingleton( () => HomeCubit( repository: i.get(), getProfileCompletion: i.get(), diff --git a/apps/mobile/packages/features/staff/profile/lib/src/staff_profile_module.dart b/apps/mobile/packages/features/staff/profile/lib/src/staff_profile_module.dart index f9b720cb..c49c8ecf 100644 --- a/apps/mobile/packages/features/staff/profile/lib/src/staff_profile_module.dart +++ b/apps/mobile/packages/features/staff/profile/lib/src/staff_profile_module.dart @@ -68,7 +68,7 @@ class StaffProfileModule extends Module { // Presentation layer - Cubit as singleton to avoid recreation // BlocProvider will use this same instance, preventing state emission after close - i.addSingleton( + i.addLazySingleton( () => ProfileCubit( i.get(), i.get(), diff --git a/apps/mobile/packages/features/staff/profile_sections/support/faqs/lib/src/staff_faqs_module.dart b/apps/mobile/packages/features/staff/profile_sections/support/faqs/lib/src/staff_faqs_module.dart index 6faf7c3a..a7e9da46 100644 --- a/apps/mobile/packages/features/staff/profile_sections/support/faqs/lib/src/staff_faqs_module.dart +++ b/apps/mobile/packages/features/staff/profile_sections/support/faqs/lib/src/staff_faqs_module.dart @@ -17,17 +17,17 @@ class FaqsModule extends Module { @override void binds(Injector i) { // Repository - i.addSingleton( + i.addLazySingleton( () => FaqsRepositoryImpl(), ); // Use Cases - i.addSingleton( + i.addLazySingleton( () => GetFaqsUseCase( i(), ), ); - i.addSingleton( + i.addLazySingleton( () => SearchFaqsUseCase( i(), ), diff --git a/apps/mobile/packages/features/staff/profile_sections/support/privacy_security/lib/src/staff_privacy_security_module.dart b/apps/mobile/packages/features/staff/profile_sections/support/privacy_security/lib/src/staff_privacy_security_module.dart index 22b0d405..81ce8a74 100644 --- a/apps/mobile/packages/features/staff/profile_sections/support/privacy_security/lib/src/staff_privacy_security_module.dart +++ b/apps/mobile/packages/features/staff/profile_sections/support/privacy_security/lib/src/staff_privacy_security_module.dart @@ -25,29 +25,29 @@ class PrivacySecurityModule extends Module { @override void binds(Injector i) { // Repository - i.addSingleton( + i.addLazySingleton( () => PrivacySettingsRepositoryImpl( Modular.get(), ), ); // Use Cases - i.addSingleton( + i.addLazySingleton( () => GetProfileVisibilityUseCase( i(), ), ); - i.addSingleton( + i.addLazySingleton( () => UpdateProfileVisibilityUseCase( i(), ), ); - i.addSingleton( + i.addLazySingleton( () => GetTermsUseCase( i(), ), ); - i.addSingleton( + i.addLazySingleton( () => GetPrivacyPolicyUseCase( i(), ), diff --git a/apps/mobile/packages/features/staff/staff_main/lib/src/staff_main_module.dart b/apps/mobile/packages/features/staff/staff_main/lib/src/staff_main_module.dart index 21493654..a479da35 100644 --- a/apps/mobile/packages/features/staff/staff_main/lib/src/staff_main_module.dart +++ b/apps/mobile/packages/features/staff/staff_main/lib/src/staff_main_module.dart @@ -26,12 +26,12 @@ class StaffMainModule extends Module { @override void binds(Injector i) { // Register the StaffConnectorRepository from data_connect - i.addSingleton( + i.addLazySingleton( StaffConnectorRepositoryImpl.new, ); // Register the use case from data_connect - i.addSingleton( + i.addLazySingleton( () => GetProfileCompletionUseCase( repository: i.get(), ),