initControl static method
- {bool? debug,
- Map? entries,
- Map<
Type, InitFactory> ? factories, - Injector? injector,
- List<
ControlModule> modules = const [], - 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;
}