initializeFromSchema method

Future initializeFromSchema(
  1. 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;
}