initializeFromSchema method
Future
initializeFromSchema(
- IMSchemaDefinition schema
)
Implementation
Future initializeFromSchema(IMSchemaDefinition schema) async {
if (this._schema != null) {
log.info("Already initialized");
return;
}
this._schema ??= schema;
_properties = mapOf<JsonPath, IMSchemaProperty>(
_schema!.properties.embedded(_metaForm!.embedPath)!,
keyOf: (prop) => prop.jsonPath,
);
_properties.values.forEach((prop) {
final _fn = FocusNode();
if (focusNode == null && prop.isRequired!) {
focusNode = _fn;
}
focusNodes[prop.path] = _fn;
});
// Maps property path to existing section definition
final pathToSection = Map.fromEntries(
widget.sections.expand(
(section) => section.properties.map((prop) => MapEntry(prop, section)),
),
);
_sections = [
...widget.sections,
MetaFormSection(
key: "default",
properties: _metaOverrides
.sortProperties(_metaForm!.handledPaths.where((p) {
return !pathToSection.containsKey(p);
}))
.toSet()),
];
focusNode ??= focusNodes.entries.firstOrNull?.value;
}