renderInput method

dynamic renderInput([
  1. FieldValueProvider? fieldValueProvider
])

Implementation

dynamic renderInput([FieldValueProvider? fieldValueProvider]) {
  var inputID = id;
  var inputType = type;
  var inputValue = fieldValueProvider != null
      ? (fieldValueProvider(fieldName) ?? value)
      : value;

  inputValue = _resolveValue(inputValue);

  Element? inputElement;
  UIComponent? inputComponent;
  DOMElement? domeElement;
  Element? element;

  if (_inputRender != null) {
    var obj = _inputRender(this);

    if (obj == null) {
      return null;
    } else if (obj is UIComponent) {
      inputComponent = obj;
    } else if (obj is InputElement) {
      inputElement = obj;
    } else if (obj is DOMElement) {
      domeElement = obj;
    } else if (obj is Element) {
      element = obj;
    } else {
      throw StateError(
          "Can't handle input rendered object type: ${obj.runtimeType} > $obj");
    }
  } else if (inputType == 'textarea') {
    inputElement = _renderTextArea(inputValue);
  } else if (inputType == 'select') {
    inputElement = _renderSelect(inputValue);
  } else if (inputType == 'image') {
    var capture = UIButtonCapturePhoto(null, text: label, fieldName: inputID);
    inputComponent = capture;
  } else if (inputType == 'color') {
    var picker = UIColorPickerInput(null,
        fieldName: inputID,
        placeholder: placeholder,
        value: inputValue,
        pickerWidth: 150,
        pickerHeight: 100);
    inputComponent = picker;
  } else if (inputType == 'path') {
    element = _renderInputPath(inputID, inputValue);
  } else if (inputType == 'html') {
    inputElement = createHTML(inputValue);
    inputElement.onClick.listen((event) {
      var value = inputElement!.getAttribute('element_value');
      if (isNotEmptyObject(value)) {
        inputElement.setAttribute('field_value', value!);
      }
    });
  } else {
    inputElement = _renderGenericInput(inputType, inputValue);
  }

  if (inputElement != null) {
    _configureElementStyle(inputElement);
    _configureInputElement(inputElement, inputID);
    _configureElementAttribute(inputElement);
    return inputElement;
  } else if (element != null) {
    var input = element.querySelector('input');
    if (input != null) {
      _configureElementStyle(element);
      _configureInputElement(input, inputID);
      _configureElementAttribute(element);
    }
    return element;
  } else if (inputComponent != null) {
    return inputComponent;
  } else if (domeElement != null) {
    return domeElement;
  }

  return null;
}