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