renderProperty method

  1. @override
Iterable<Widget> renderProperty(
  1. BuildContext context,
  2. IMetaFormContext metaForm,
  3. HandledPaths paths,
  4. SunnyFormFieldState<T> state, {
  5. Key? key,
})
override

Renders a widget (or null) for a provided HandledPaths (see acceptProperties)

Implementation

@override
Iterable<Widget> renderProperty(
    BuildContext context,
    IMetaFormContext metaForm,
    HandledPaths paths,
    SunnyFormFieldState<T> state,
    {Key? key}) {
  final MSchemaRef embedRef = paths.data["embedRef"] as MSchemaRef;
  final embedPath = paths.path;
  final form = context.form();
  MModel? subject = context.form().get(embedPath);
  if (subject == null) {
    subject = embedRef.newInstance();
    form.set(embedPath, subject);
  }
  return [
    MetaForm(
      name: "embed-${paths.path.toKey()}",
      metaFormContext: MetaFormContext.embedded(
        context,
        ref: embedRef,
        embedPath: embedPath,
        overrides: metaForm.overrides,
        extraHandlers: metaForm.extraHandlers.cast(),
        scope: metaForm.scope,
        subject: subject!,
      ),
    )
  ];
}