locatorSetup function
Implementation
Future<void> locatorSetup() async {
// Core
locator.registerSingleton<GlobalKey<NavigatorState>>(
GlobalKey<NavigatorState>(),
);
// Storage
locator.registerSingletonAsync<SharedPreferences>(
() async => await SharedPreferences.getInstance(),
);
locator.registerLazySingleton<CacheHelper>(
() => CacheHelper(preferences: locator<SharedPreferences>()),
);
locator.registerLazySingleton(() => FlutterSecureStorage());
locator.registerLazySingleton<SecureStorage>(
() => SecureStorage(storage: locator<FlutterSecureStorage>()),
);
// Firebase
locator.registerLazySingleton<FirebaseAuth>(() => FirebaseAuth.instance);
locator.registerLazySingleton<FirebaseFirestore>(
() => FirebaseFirestore.instance,
);
locator.registerLazySingleton<FirebaseMessaging>(
() => FirebaseMessaging.instance,
);
locator.registerLazySingleton<FirebaseCrashlytics>(
() => FirebaseCrashlytics.instance,
);
locator.registerLazySingleton<FirebaseAnalytics>(
() => FirebaseAnalytics.instance,
);
// Networking
locator.registerLazySingleton<Dio>(
() => CustomDio(customSecureStorage: locator<SecureStorage>()).createDio(),
);
locator.registerLazySingleton<ApiServices>(() => ApiServices(locator<Dio>()));
// Notifications
locator.registerLazySingleton<FlutterLocalNotificationsPlugin>(
() => FlutterLocalNotificationsPlugin(),
);
locator.registerLazySingleton<NotificationService>(
() => NotificationService(
messaging: locator<FirebaseMessaging>(),
localPlugin: locator<FlutterLocalNotificationsPlugin>(),
),
);
// Composite Services
locator.registerLazySingleton<FirebaseServices>(
() => FirebaseServices(
firebaseAuth: locator<FirebaseAuth>(),
firebaseFirestore: locator<FirebaseFirestore>(),
secureStorage: locator<SecureStorage>(),
crashlytics: locator<FirebaseCrashlytics>(),
analytics: locator<FirebaseAnalytics>(),
),
);
}