renderWithLayout method

Future<void> renderWithLayout(
  1. String viewName,
  2. String layoutName, {
  3. Map<String, dynamic> data = const {},
  4. Map<String, dynamic> layoutData = const {},
})

Sends a template with layout.

Implementation

Future<void> renderWithLayout(
  String viewName,
  String layoutName, {
  Map<String, dynamic> data = const {},
  Map<String, dynamic> layoutData = const {},
}) async {
  final renderer = ViewRenderer.instance;
  final viewContext = await _buildViewContext(data);

  // Render the main content
  final content = await renderer.render(viewName, context: viewContext);

  // Render the layout with content injected
  final layoutContext = await _buildViewContext({
    ...layoutData,
    'content': content,
  });

  final fullContent =
      await renderer.render(layoutName, context: layoutContext);

  _headers.setContentType(ContentType.html);
  _body.sendHtml(fullContent);
}