widgetInit method
void
widgetInit({
- PluginDescriptor? plugins,
- PlatformWidgetBuilder? widgetBuilder,
- required ExtensionBuilder<
ExtensionDescriptor> extensionBuilder, - required List<
ExtensionDescriptor> extensionDescriptors, - Future<
void> onReady()?,
Purely meant to be called with running Vyuh in widget-mode, using VyuhContentWidget
.
There is a convenience API inside vyuh_extension_content
to make this easier.
Use the VyuhContentBinding.init()
instead.
Make sure to call this before calling Flutter's runApp()
.
!!! NOTE !!!
DO NOT call this when using the Vyuh framework directly.
Implementation
void widgetInit({
PluginDescriptor? plugins,
PlatformWidgetBuilder? widgetBuilder,
required ExtensionBuilder extensionBuilder,
required List<ExtensionDescriptor> extensionDescriptors,
Future<void> Function(VyuhBinding)? onReady,
}) async {
if (_initialized) {
return;
}
_initInvoked = true;
_mode = _RunMode.widget;
this.widgetBuilder = widgetBuilder ?? PlatformWidgetBuilder.system;
_pluginDescriptor = plugins ?? PluginDescriptor.system;
final effectivePlugins = _pluginDescriptor.plugins;
_extensionBuilder = extensionBuilder;
// Invoke the init inline
widgetReady = Future(() async {
// Cleanup
final disposeFns = effectivePlugins.map((e) => e.dispose());
await Future.wait(disposeFns, eagerError: true);
// Init
for (final plugin in effectivePlugins) {
await plugin.init();
}
// Time to associate the ContentPlugin with the ContentExtensionBuilder. This keeps
// track of the type registry and helps in building ContentItems
await _extensionBuilder.init(extensionDescriptors);
await onReady?.call(VyuhBinding.instance);
});
_initialized = true;
}