initControl static method

bool initControl(
  1. {bool? debug,
  2. Map? entries,
  3. Map<Type, InitFactory>? factories,
  4. Injector? injector,
  5. List<ControlModule> modules = const [],
  6. Future initAsync(
      )?}
    )

    // // // Initializes ControlFactory and other core Control objects. Loads BasePrefs and BaseLocalization, also builds RouteStore.

    debug - Runtime debug value. This value is also provided to BaseLocalization. Default value is kDebugMode. entries - Default items to store in ControlFactory. Use Control.get to retrieve this objects and Control.set to add new ones. All objects are initialized - Initializable.init and DisposeHandler.preferSoftDispose is set. factories - Default factory initializers to store in ControlFactory Use Control.init or Control.get to retrieve concrete objects. injector - Property Injector to use right after object initialization. Use BaseInjector for Type based injection. modules - initAsync - Custom async function to execute during ControlFactory initialization. Don't overwhelm this function - it's just for loading core settings before 'home' widget is shown.

    Implementation

    /// Initializes [ControlFactory] and other core [Control] objects.
    /// Loads [BasePrefs] and [BaseLocalization], also builds [RouteStore].
    ///
    /// [debug] - Runtime debug value. This value is also provided to [BaseLocalization]. Default value is [kDebugMode].
    /// [entries] - Default items to store in [ControlFactory]. Use [Control.get] to retrieve this objects and [Control.set] to add new ones. All objects are initialized - [Initializable.init] and [DisposeHandler.preferSoftDispose] is set.
    /// [factories] - Default factory initializers to store in [ControlFactory] Use [Control.init] or [Control.get] to retrieve concrete objects.
    /// [injector] - Property Injector to use right after object initialization. Use [BaseInjector] for [Type] based injection.
    /// [modules] -
    /// [initAsync] - Custom [async] function to execute during [ControlFactory] initialization. Don't overwhelm this function - it's just for loading core settings before 'home' widget is shown.
    static bool initControl({
      bool? debug,
      Map? entries,
      Map<Type, InitFactory>? factories,
      Injector? injector,
      List<ControlModule> modules = const [],
      Future Function()? initAsync,
    }) {
      if (isInitialized) {
        return false;
      }
    
      factory.debug = debug ?? kDebugMode;
    
      entries ??= {};
      factories ??= {};
    
      modules = ControlModule.fillModules(modules);
    
      factory.initialize(
        entries: {
          for (ControlModule module in modules) ...module.entries,
          ...entries,
        },
        factories: {
          for (ControlModule module in modules) ...module.factories,
          ...factories,
        },
        injector: injector,
        initAsync: () async {
          for (ControlModule module in modules) {
            if (module.preInit) {
              await module.init();
            }
          }
    
          await FutureBlock.wait([
            for (ControlModule module in modules)
              if (!module.preInit) module.init(),
            initAsync?.call(),
          ]);
        },
      );
    
      return true;
    }