renderProperty method

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

Iterable<Widget> renderProperty(
    BuildContext context, IMetaFormContext metaForm, HandledPaths paths, SunnyFormFieldState<T?> state,
    {Key? key}) {
  final prop = paths.property as IEmbeddedProperty;
  final theRef = prop.embedRef;
  final _mfProp = metaForm.prop(paths.property!);

  final handler = context.optionsService.getKeyedHandler<MKey, T>(theRef, metaContext: _mfProp);

  final viewHandler = context.typeaheadService.getTypeaheadRenderer<MKey, T>(theRef);

  final fullPath = paths.fullPath<T>();
  return [
    OptionSelectorControl<MKey, T>(
      key: Key("field-$fullPath"),
      handler: handler,
      focusNode: state.focusNode,
      isRequired: prop.isRequired == true,
//      noOptionsLabel: widget.noOptionsLabel,
//        autofocus: widget.autofocus ?? false,
      onChange: (option, source) {
        state.updateValue(option?.value, source);
      },
      expected: (option) => option?.value,
      onError: (error) => state.error = error,
      initialValue: state.value,
      viewHandler: viewHandler,
    ),
  ];
}