getNullableProperty<T> method

  1. @override
Property<T?> getNullableProperty<T>(
  1. String name,
  2. T converter(
    1. String s
    ),
  3. T? defaultValue(), {
  4. bool isImmutable = true,
})
override

Implementation

@override
Property<T?> getNullableProperty<T>(
    String name, T Function(String s) converter, T? Function() defaultValue,
    {bool isImmutable = true}) {
  var property = getPropertyAsElement(element, name);
  if (property != null) {
    var firstChild = property.firstChild;
    if (firstChild != null) {
      if (firstChild is XmlText || firstChild is XmlCDATA) {
        return createNullableProperty<T>(
            converter(firstChild.text), isImmutable);
      }
      if (firstChild is XmlElement) {
        if (firstChild.name.qualified == 'expression') {
          var expressionChild = firstChild.firstChild!;
          if (expressionChild.nodeType == XmlNodeType.CDATA ||
              expressionChild.nodeType == XmlNodeType.TEXT) {
            return StringExpressionProperty<T?>(expressionChild.text);
          }
        }
      }
    }
  }
  var attributeValue = getAttribute(element, name);
  if (attributeValue != null) {
    return createNullableProperty<T>(converter(attributeValue), isImmutable);
  }
  return createNullableProperty<T>(defaultValue(), isImmutable);
}