createImageElementFromURL method

Element createImageElementFromURL(
  1. JSONRender render,
  2. bool lazyLoad,
  3. String? url, [
  4. String? urlType,
])

Implementation

Element createImageElementFromURL(
    JSONRender render, bool lazyLoad, String? url,
    [String? urlType]) {
  if (urlType != null && DataURLBase64.matches(urlType)) {
    var div = createDivInline();
    var loadingElem = SpanElement()
      ..innerHtml = _randomPictureEntity()
      ..style.fontSize = '120%';
    div.children.add(loadingElem);

    var imgElem = ImageElement();

    var cachedResponse = getURLCached(render, url!);

    if (cachedResponse != null && cachedResponse.isOK) {
      // ignore: unsafe_html
      imgElem.src = '$urlType${cachedResponse.bodyAsString}';
      return imgElem;
    }

    if (lazyLoad) {
      _trackElementsInViewport.track(imgElem, onEnterViewport: (elem) {
        _loadElementBase64(render, imgElem, url, urlType, loadingElem);
      });
    } else {
      _loadElementBase64(render, imgElem, url, urlType, loadingElem);
    }

    imgElem.style.maxWidth = '100%';
    imgElem.style.maxHeight = '100%';

    div.children.add(imgElem);

    return div;
  } else {
    var imgElem = ImageElement();
    // ignore: unsafe_html
    imgElem.src = url;
    return imgElem;
  }
}