renderInput method
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;
}