head static method

Component head({
  1. List<HeadElementData>? elements,
})

Inject elements into the document head synchronously

Implementation

static Component head({List<HeadElementData>? elements}) {
  if (_stylesInjected || elements == null || elements.isEmpty) {
    return const Component.fragment([]);
  }
  _stylesInjected = true;

  final web.HTMLHeadElement head = web.document.head!;

  for (final HeadElementData element in elements) {
    if (element.tag == 'link') {
      final web.HTMLLinkElement link =
          web.document.createElement('link') as web.HTMLLinkElement;
      if (element.attributes != null) {
        for (final MapEntry<String, String> attr in element.attributes!.entries) {
          link.setAttribute(attr.key, attr.value);
        }
      }
      head.appendChild(link);
    } else if (element.tag == 'style' && element.textContent != null) {
      final web.HTMLStyleElement style =
          web.document.createElement('style') as web.HTMLStyleElement;
      style.textContent = element.textContent!;
      head.appendChild(style);
    }
  }

  // Hide loading screen after fonts are ready
  _hideLoadingScreenWhenReady();

  return const Component.fragment([]);
}