setupServiceLocator function

Future<void> setupServiceLocator()

Implementation

Future<void> setupServiceLocator() async {
  await _initLock.synchronized(() {
    if (_isInitialized) {
      return; // Prevent double initialization
    }

    // Register core utilities as factory (stateless)
    getIt
      ..registerFactory<CheckNumeric>(() => CheckNumeric())
      ..registerFactory<IFocusNode>(() => FlutterFocusNodeAdapter.create())
      // Register data sources
      ..registerFactory<FormDataSource>(() => FormJsonDataSource())
      // Register repositories
      ..registerFactory<FormUiBuilderRepository>(
        () => FormUiBuilderRepositoryImpl(dataSource: getIt()),
      )
      // Register use cases as factory (stateless operations)
      ..registerFactory<BuildParameterMap>(
        () => BuildParameterMap(focusNodeFactory: () => getIt<IFocusNode>()),
      )
      ..registerFactory<BuildFormLogicBundle>(
        () => BuildFormLogicBundle(
          repository: getIt(),
          buildParameterMap: getIt(),
        ),
      )
      ..registerFactory<BuildFormLogicBundleFromParameterMap>(
        () => BuildFormLogicBundleFromParameterMap(buildParameterMap: getIt()),
      )
      ..registerFactory<ValidateTextFieldValue>(
        () => ValidateTextFieldValue(checkNumeric: getIt()),
      )
      ..registerFactory<UpdateFieldWithDependencies>(
        () => UpdateFieldWithDependencies(),
      )
      ..registerFactory<ValidateFieldOnBlur>(() => ValidateFieldOnBlur())
      ..registerFactory<UpdateVisibilityState>(() => UpdateVisibilityState())
      ..registerFactory<ValidationOnSubmit>(() => ValidationOnSubmit());

    _isInitialized = true;
  });
}