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;
}