render method

String render()

Render the view with mustache

Implementation

String render() {
  // Read the main template
  final templateContent = _readTemplate(templatePath);
  final template = Template(templateContent, name: templatePath);

  // Prepare data with i18n helpers
  final viewData = Map<String, dynamic>.from(data);

  // Add i18n helpers to template data
  viewData['__'] = (String key, [Map<String, dynamic>? params]) {
    return i18n.trans(key, params: params);
  };

  // Render the main template
  final rendered = template.renderString(viewData);

  // If layout is specified, wrap the rendered content
  if (layout != null) {
    final layoutContent = _readTemplate(layout!);
    final layoutTemplate = Template(layoutContent, name: layout!);
    final layoutData = Map<String, dynamic>.from(data);
    layoutData['content'] = rendered;
    layoutData['__'] = viewData['__'];
    return layoutTemplate.renderString(layoutData);
  }

  return rendered;
}