render method

  1. @override
ValueProvider render(
  1. JSONRender render,
  2. DivElement output,
  3. dynamic node,
  4. dynamic nodeOriginal,
  5. NodeKey nodeKey,
)
override

Implementation

@override
ValueProvider render(JSONRender render, DivElement output, dynamic node,
    dynamic nodeOriginal, NodeKey nodeKey) {
  var options = (node as List).cast<Map>().toList();

  var elem = SelectElement();

  for (var opt in options) {
    var optionElement =
        OptionElement(value: opt['value'], data: opt['label']);
    elem.add(optionElement, null);
  }

  valueProvider(parent) => elem.options
      .map((opt) => <String, dynamic>{
            'value': opt.value,
            'label': opt.label,
            if (opt.selected) 'selected': true
          })
      .toList();

  if (render.renderMode != JSONRenderMode.input) {
    elem.disabled = true;
  }

  output.children.add(elem);

  applyCSS(render, output, extraElements: [elem]);

  return valueProvider;
}