ssr method

void ssr(
  1. String path,
  2. BloomNode builder(
    1. BloomRequest request
    ), {
  3. HeadManager head(
    1. BloomRequest request
    )?,
  4. String layout(
    1. String bodyHtml,
    2. HeadManager? head
    )?,
  5. List<BloomMiddleware> middlewares = const [],
})

Mounts a Server-Side Rendered (SSR) endpoint within this group.

Implementation

void ssr(
  String path,
  BloomNode Function(BloomRequest request) builder, {
  HeadManager Function(BloomRequest request)? head,
  String Function(String bodyHtml, HeadManager? head)? layout,
  List<BloomMiddleware> middlewares = const [],
}) {
  get(path, (request) async {
    final node = builder(request);
    final bodyHtml = renderToHtml(node);
    final headManager = head?.call(request);

    final String fullHtml;
    if (layout != null) {
      fullHtml = layout(bodyHtml, headManager);
    } else if (headManager != null) {
      fullHtml = headManager.wrapDocument(bodyHtml);
    } else {
      fullHtml =
          '<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"></head><body>$bodyHtml</body></html>';
    }

    return BloomResponse.html(fullHtml);
  }, middlewares: middlewares);
}