widgetInit method
void
widgetInit({
- PluginDescriptor? plugins,
- PlatformWidgetBuilder? widgetBuilder,
- required ExtensionBuilder<
ExtensionDescriptor> extensionBuilder, - required List<
ExtensionDescriptor> extensionDescriptors, - Future<
void> onReady()?,
Runs Vyuh in widget mode: plugins and one extension builder, without
runApp, features or a router. Packages that embed Vyuh widgets in a
non-Vyuh app wrap this in their own binding API.
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();
}
// Let the extension builder register its contributions.
await _extensionBuilder.init(extensionDescriptors);
await onReady?.call(VyuhBinding.instance);
});
_initialized = true;
}